僕がよく使う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についてはこの前書いた。