会社で使うgitコマンドのまとめ
よく使うコマンドをまとめてみました。
作業を始める前によく使うコマンド
$ git co master
masterに移動します。今後masterはポリコレ的に改名されるらしいですが…。
$ git config --global alias.co checkout
でaliasを設定しておきましょう。
$ git pull
まずはpullしましょう。featureブランチにいてmasterでpullせずにindexだけoriginからのアップデートを受ける時は
$ git fetch
ですね。
$ git co -b <feature branch name>
から開発作業開始です。ブランチ名はたいていチケットの番号とかIDとかを使う会社がほとんどかと思います。
$ git co -
でcdと同様にさっきまでいたブランチに戻れます。
作業中によく使うもの
$ git st
でコミットステータスの確認をします。
$ git config --global alias.st status
してalias設定しておきましょう。
$ git stash
で作業仕掛けのまだコミットしていないファイルをとりあえず退避します。
$ git stash pop
でstashしたファイルを戻します。
$ git stash list
するとstashしたものの一覧が見られます。
作業がとりあえず終わったら
$ git diff
でコミット前に変更内容を確認します。
$ git add -u
すると一括でmodifiedされたファイルの変更をstageできます。
$ git add -p
で変更箇所を一つずつ確認しながら対話的にstageできます。
$ git diff --staged
で今からコミットする変更の最終確認をしましょう。stageされた変更のdiffが見られます。
コミットしてプッシュ
$ git ci -m "コミットメッセージ"
でコミットです。
$ git config --global alias.ci commit
でaliasを設定しておきましょう。
$ git ci --amend
で間違えたコミットメッセージを修正できます。
$ git rebase -i <コミットを集約するcommit idの1個前のcommit id>
リモートに自分の迷いとか作業途中のコミットを全部送るはやめましょう。綺麗なツリーが大事です。 このコマンドでどのコミットを残してどのコミットをsquashするかを選んで集約できます。指定するcommit idは大体originの指しているコミットかまだpushしたことがなければmasterのコミットになると思います。
$ git push origin <remote branch name>
綺麗なツリーになったら変更内容をリモートにpushします。これで作業はおしまいです。Pull RequestなりMerge Requestなりを上げてコードレビューを始めましょう。
コードレビュー中にmasterとconflictしちゃったら
$ git co master $ git pull $ git co - $ git rebase master
してmasterをrebaseしましょう。rebase中にconflictを解消しながらbaseのmasterを前に進めていきます。
$ git push origin <remote branch name> --force-with-lease
でrebaseした内容をリモートにpushします。--force-with-lease
はpushする内容が新しい場合だけpushが効くようにするオプションです。古い内容でpushするのはほとんどの場合で間違いなので念のためにいつでもつけるようにしましょう。
他に便利なコマンド
alias.tree=log --graph --all --format="%x09%C(cyan bold)%an%Creset%x09%C(yellow)%h%Creset %C(magenta reverse)%d%Creset %s"
で
$ git tree
が使えます。便利です。こちらを参考にしました。
alias.delete-merged-branches=!git branch --merged | grep -v \* | xargs -I % git branch -d %
で
$ git delete-merged-branches
が使えます。マージ後にmasterに取り込まれたブランチをざっくり全部消すのに使えます。マージされていないものは消えませんので安心してください。こちらを参考にしました。
最低限これだけあれば普通に仕事できるはず
他にもたくさんの技があるのでネットで色々見てみるといいかと思います。