大した話ではないが,新しい職場で学んだ,Git のちょっと便利な tips を2つ.
ざっくりと GitHub Flow (master
ブランチに Pull Request 経由で Feature 開発用ブランチにマージし,すぐにデプロイ可能にするような運用) を念頭においてほしい.
Feature ブランチを remote repository に push するときは HEAD
参照で良い
これまで,機能を開発してリモートブランチに push するときにブランチ名を書いていた.
$ git checkout -b feature/sample-development
$ git commit -m "色々な開発をしてコミットする"
$ git push origin feature/sample-development
が,この push 時のブランチ参照は,そのブランチで作業している限り HEAD
で良い.
$ git checkout -b feature/sample-development
$ git commit -m "色々な開発をしてコミットする"
$ git push origin HEAD # `head` でもよい
HEAD
がどういうものか理解していれば当然なのだけど,最初に教科書で学んだときのやりかたでずーっとやることで無駄をしてたなぁと反省.
ただし, master
など大事かつ慎重に運用しなければいけないブランチに間違って push -f
してしまう可能性もあるため,その場合はリモート側 (GitHub や BitBucket, GitLab など) の設定でカバーしたい.
直前にいたブランチを参照するときは -
でよい
競合の解消やブランチグラフの美化のために,リモートで更新された master
に追従する際にも,基本的に Feature ブランチの名前は覚えなくても良い.
たとえば, リモートの最新の master
を取得して,現在開発している Feature ブランチをその master
の上に Rebase する作業を考える.
$ # 今 feature/sample-development ブランチ上にいるとする
$ git fetch upstream
$ git checkout master
$ git merge upstream/master # ここまでの操作を git pull でできるならそれでも可
$ git checkout feature/sample-development
$ git rebase master # もしくはローカルの master の追従をしないときは `rebase upstream/master` でも
どの Feature ブランチを checkout
すればよいのかに悩むケースがあるが,この場合は master
をチェックアウトする前のブランチに戻りたいので,実は -
で代用できる. 1
$ # 今 feature/sample-development ブランチ上にいるとする
$ git fetch upstream
$ git checkout master
$ git merge upstream/master
$ git checkout -
$ git rebase master
-
これ,ドキュメント上で見つけられないのだけれど,どこに書いてあるんだろう… そんな状況でこの記事書いてて恐縮です… ↩