home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/RCS/Git (v2)

技術/RCS/Git (v2)

技術 / RCS / Git (v2)
id: 1069 所有者: msakamoto-sf    作成日: 2012-04-01 21:40:33
カテゴリ: Git 

2013年になって、ようやくお仕事の都合もあり、Gitを使って見ることにしました。
Redmineとの連携も体験したかったので、ALMiniumをUbuntu上に展開し、そこにリモートリポジトリを作成して練習してみました。
ということで、その時の練習メモです。

本家:

勉強した時の参考資料:

Gitの使い方メモ

各種参考資料からの抜き書き。(もしかしたら間違ってるかもしれないので注意)

初期設定

$ git config --global user.name "FirstName FamilyName"
$ git config --global user.email foo@example.com
$ git config --global core.editor "/usr/bin/vim"

SSLの証明書検証を無視させる:社内LAN上のサーバを参照する場合など。

$ git config --global http.sslverify false

日本語文字化け対策(Cygwin Git)

今回検証に使ったCygwin Gitのバージョン

$ git --version
git version 1.7.9

LANG環境変数

$ echo $LANG
ja_JP.UTF-8

"git diff"文字化け対策(?):

$ export PAGER="lv"

コミットログ編集時文字化け対策:

$ git config --global i18n.commitencoding UTF-8

"git status"文字化け対策:

$ git config --global core.quotepath false

参考:

基本的なファイル追加・名前変更・削除操作

"git add"をskipしてcommit

$ git commit -a

"git add"したファイルを"Stage(Index)"から外したい

$ git status -s
 M hello.txt
$ git add hello.txt
$ git status -s
M  hello.txt

→これを戻す:

$ git reset -- hello.txt
Unstaged changes after reset:
M       hello.txt
$ git status -s
 M hello.txt

→さらに、hello.txtの変更も無効化して最後の状態に戻すには:

$ git checkout -- hello.txt

1つ手前のコミット状態に戻したい

HEAD自体が参照しているリビジョンは動かさずに、Stage(Index)とWorking Directoryを巻き戻す:

$ git checkout HEAD^
$ git branch
* (no branch)
  master

その後、調べ物が終わったので、masterのHEADに戻す:

$ git checkout master

HEAD自体を巻き戻す:

$ git reset HEAD^

→ただし、これだと"Stage(Index)"を1つ手前に戻した状態となる。HEADを移動させるには、リビジョンのID指定で"git reset"し直す必要がある。

ファイル名の変更

$ git mv old new

ファイルの削除

$ git rm file

ファイル・ディレクトリを無視させる

基本は "man gitignore" 参照。

参考:

ブランチの作成と切り替え

その1:user1で新規ブランチ作成~pushまで
$ git checkout -b b2

... some modification ...

$ git commit -a

$ git push origin b2
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 313 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://shade1.glamenv-septzen.net/git/testproject1
 * [new branch]      b2 -> b2
その2:user2で、新しくpushされたb2をpullして編集、pushするまで
$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From http://shade1.glamenv-septzen.net/git/testproject1
 * [new branch]      b2         -> origin/b2
Already up-to-date.

$ git checkout b2

...

$ git commit -a

$ git push
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 343 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://shade1.glamenv-septzen.net/git/testproject1
   e90b0d3..bd9b8ae  b2 -> b2
その3:user1で、user2がb2にpushした変更をpullして、masterにマージするまで
$ git branch
  b1
* b2
  master

$ git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From http://shade1.glamenv-septzen.net/git/testproject1
   e90b0d3..bd9b8ae  b2         -> origin/b2
You asked me to pull without telling me which branch you
want to merge with, and 'branch.b2.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

...(省略)...

See git-config(1) for details.

→怒られたので、originとブランチ名を指定してみる:
$ git pull origin b2
From http://shade1.glamenv-septzen.net/git/testproject1
 * branch            b2         -> FETCH_HEAD
Updating e90b0d3..bd9b8ae
Fast-forward
 hello2.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

→masterブランチにmergeして、pushする。
$ git checkout master
Switched to branch 'master'
$ git merge b2
Updating 8914003..bd9b8ae
Fast-forward
 hello2.txt |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

$ git push
Total 0 (delta 0), reused 0 (delta 0)
To http://shade1.glamenv-septzen.net/git/testproject1
   8914003..bd9b8ae  master -> master
その4:作業が終わったb2ブランチを削除する(未完)
最初にローカルから削除。
$ git branch -d b2
Deleted branch b2 (was bd9b8ae).

続いてリモートから削除。
$ git push origin :b2
remote: error: denying ref deletion for refs/heads/b2
→???

ALMiniumとGitのアカウントの連携の設定が影響してるのか、リモートブランチ削除できない・・・。順番がおかしいのか?謎。

参考資料

Git Cheat Sheet

Git Cheat Sheets それ自体のまとめ

Cheat Sheetもいろいろあるらしく、Cheat Sheet自体のまとめサイトが出てきてる。

その他



プレーンテキスト形式でダウンロード
表示中のバージョン : 2
現在のバージョン : 11
更新者: msakamoto-sf
更新日: 2018-01-04 11:05:24
md5:3227db9ec5baffa82325ad55647f2e3d
sha1:2f6a226224772dbb061089474ddb3984ee79399b
コメント
コメントを投稿するにはログインして下さい。