Gitを触ってみるよ その6「普段よく使うコマンドの覚書き」

普段よく使うコマンドたちを、よく使っている内に覚書きとして残しておくテスト。

初期化・初期設定

ローカルでバージョン管理を始めたかったら、とにもかくにも"git init"。

$ cd /path/to/project
$ git init

diff結果やログをカラー表示させたい場合は、以下のコマンド。

$ git config --global color.branch always
$ git config --global color.diff always
$ git config --global color.interactive always
$ git config --global color.status always

"--global"で設定すると、多分ユーザ毎の設定になるので、1回実行しておけば次回以降は不要だと思います。

更新・コミット

ソースコードに更新を掛けたら、以下の要領でローカルリポジトリにコミットします。

$ cd /path/to/project
$ git add .
$ git status
$ git commit

"git commit -a"だと、新しく追加されたファイルは更新対象にならないので、ファイルを追加したかどうか気にするぐらいだったら、毎回"git add ."した方がいいかなと。

あと、"git add ."した後に必ず"git status"として、ファイルの更新漏れが無いか確認しておいた方がいいかなと。以下のように"git status"で見た時に赤で表示されるファイルは、更新対象から漏れているものです。

特に、自分でrmとかでファイルを削除してしまった時は、以下のようにキャッシュ上のファイルを自分で削除する必要があります。

$ git rm --cached file2

rmで消さずに、"git rm file2"などとすれば、ローカルファイルとキャッシュ上のファイルを同時に消せるのですが、自分の場合は、いちいち"git rm"にすべきかどうか考えるのが面倒なので、消す時はrmで消してしまって、上記のようにコミットの際に必要になった時だけ、"git rm --cached"で消すようにしています。

ファイルの状態を戻す

ローカル上のファイルをキャッシュ上の状態に戻すには以下のコマンド。

$ git checkout file

"git rm"してしまっているとキャッシュ上のファイルも消えてしまっている為、この方法では戻せなくなってしまうので、そういう意味でもファイルの削除はコミット時だけにしておくのが良いかなと。

ちなみに、コミットした後でも何回か前のコミット状態に戻す事もできます。キャッシュとローカルの両方を戻す場合は以下。

$ git reset --hard HEAD^

これは、最新のコミットの1つ前のコミットの状態に戻す場合。"--hard"を"--soft"にすると、キャッシュのみ状態が戻って、ローカルは現状維持になります。

ちなみに、最新のコミット状態より後にファイルが追加されて、まだ"git add"されていない場合、"git reset --hard"でも、追加される前の状態(ファイルが無い状態)にはならないようです。

"git reset --hard"する場合は、とりあえず一旦コミットはしてしまって、クリーンな状態で行った方が混乱が少なそうです。

"元に戻す"操作に関してはCodeReposのFAQが分かりやすくて参考になります。

http://coderepos.org/share/wiki/FAQ/Git

ブランチ

ブランチを新しく作って移動するには以下のコマンド。

$ git branch test1
$ git checkout test1

ブランチの移動で切り替わるのは飽くまでコミットの状態である事に注意。ローカルやキャッシュの状態はブランチを移動しても引き継がれます。

ブランチでの更新をmasterに反映させるには以下のコマンド。

$ git checkout master
$ git merge test1

単純にマージした場合は、ブランチ上で行ったコミットが全てマージ先に反映される事になります。

ちなみに、ブランチでの更新を一括して一つのコミットとしてマージしたい場合は、以下のようにします。

$ git checkout master
$ git merge --squash test1
$ git commit

これを使えば、ブランチ上でガンガン更新、ガンガンコミットしまくれて、とりあえずで適当なコメントでコミットしておいたりしても、そういった汚い部分は表に見せる事なく、最後にしれっと素敵なコメントだけ残してマージする事ができます。


ローカルでの作業に関してはこんなところですかね。

リモートリポジトリの作り方なんかは、以前記事を書いたので、そちらを参照。
Gitを触ってみるよ その3「集中管理型リポジトリの作成」 - Stellaqua - TOMの技術日記

また便利な使い方を覚えたら追記しようかと思います。