僕がよく使う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
こんな風に見える。
ググったら 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'
4. git status 状況を確認
5. git diff 差分を確認
--cached オプションもよく使うかな。インデックスとコミットの差分みるのに。
6. git add インデックスに追加
7. git commit -m コミット
WIPプルリクエストするために、空コミットもしたりする。
$ git commit --allow-empty -m "Start story"
8. git commit --amend コミットを修正
コミットログをtypoしてたり、ファイルを追加し忘れてたりするときに使う。
9. git fetch --prune リモートの最新情報を取得する
git pull がなんか苦手で、いつも fetch してきて graph で状態を確認してから merge するか rebase するか考える。 --prune はリモートのブランチがマージ終わって削除されてたりしたらそれを反映してくれるのでいつもつけてる。
10. git merge 変更をマージする
こいつは、マージコミットを作ってくれる。
11. git rebase 変更を移動する
こいつは、マージとは違ってつけかえてくれる。コンフリクトがないならこっちのが好きだな。
12. git push 変更をリモートにプッシュする
13. git update-ref 作業ブランチのポインタを移動する
次の作業に移るときに、ローカルブランチ管理するの面倒だから移動で済ませる。ch3に移動してみる。
14. git reflog なんかミスった時
僕が今日ごにょごにょミスったりしてるのも全部残ってる!
これくらいかなー。まぁ reflog は「よく使う」ってワケじゃないけど。あ!やばい仕事に行かなきゃ!
参照
Git Workflowについてはこの前書いた。