LoginSignup
2
0

More than 5 years have passed since last update.

CLI で頑張ってブランチ名を覚えない

Posted at

大した話ではないが,新しい職場で学んだ,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

  1. これ,ドキュメント上で見つけられないのだけれど,どこに書いてあるんだろう… そんな状況でこの記事書いてて恐縮です… 

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0