僕がよく使うGitコマンド14個

僕がよく使うGitのコマンドの整理をしておこうと思った。

1. git clone リポジトリから取ってくる

まずはcloneするよね。手元にあってちょうど良い感じなのがmakingさんのjsug-shopだったので、これで進めてみる。

$ git clone git@github.com:bufferings/jsug-shop.git
Cloning into 'jsug-shop'...
remote: Counting objects: 299, done.
remote: Total 299 (delta 0), reused 0 (delta 0), pack-reused 299
Receiving objects: 100% (299/299), 427.05 KiB | 193.00 KiB/s, done.
Resolving deltas: 100% (96/96), done.
Checking connectivity... done.
$ cd jsug-shop/

2. (エイリアス) git graph コミット履歴を確認

僕は、これだけを ~/.gitconfigエイリアス設定してる。

[alias]
  graph = log --graph --all --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

こんな風に見える。

f:id:bufferings:20160217074949p:plain

ググったら lg とか lga とかで設定するのが多いのかな。その方が短くて良いかもね。

3. git checkout -b 作業ブランチを作る

めんどくさがりなので、ローカルブランチ名はあんまり考えない。 origin/ch02 で作業を開始する場合はこんな感じ

$ git checkout -b work origin/ch02
Branch work set up to track remote branch ch02 from origin.
Switched to a new branch 'work'

f:id:bufferings:20160217080249p:plain

4. git status 状況を確認

f:id:bufferings:20160217081806p:plain

5. git diff 差分を確認

f:id:bufferings:20160217081832p:plain

--cached オプションもよく使うかな。インデックスとコミットの差分みるのに。

6. git add インデックスに追加

f:id:bufferings:20160217081947p:plain

7. git commit -m コミット

f:id:bufferings:20160217082201p:plain

WIPプルリクエストするために、空コミットもしたりする。

$ git commit --allow-empty -m "Start story"

8. git commit --amend コミットを修正

コミットログをtypoしてたり、ファイルを追加し忘れてたりするときに使う。

f:id:bufferings:20160217082618p:plain

9. git fetch --prune リモートの最新情報を取得する

git pull がなんか苦手で、いつも fetch してきて graph で状態を確認してから merge するか rebase するか考える。 --prune はリモートのブランチがマージ終わって削除されてたりしたらそれを反映してくれるのでいつもつけてる。

f:id:bufferings:20160217083635p:plain

10. git merge 変更をマージする

こいつは、マージコミットを作ってくれる。

f:id:bufferings:20160217083735p:plain

11. git rebase 変更を移動する

こいつは、マージとは違ってつけかえてくれる。コンフリクトがないならこっちのが好きだな。

f:id:bufferings:20160217084012p:plain

12. git push 変更をリモートにプッシュする

f:id:bufferings:20160217084140p:plain

13. git update-ref 作業ブランチのポインタを移動する

次の作業に移るときに、ローカルブランチ管理するの面倒だから移動で済ませる。ch3に移動してみる。

f:id:bufferings:20160217084413p:plain

14. git reflog なんかミスった時

f:id:bufferings:20160217084527p:plain

僕が今日ごにょごにょミスったりしてるのも全部残ってる!

これくらいかなー。まぁ reflog は「よく使う」ってワケじゃないけど。あ!やばい仕事に行かなきゃ!

参照

Git Workflowについてはこの前書いた。

bufferings.hatenablog.com