@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Git 直近のマージコミットを得る

git log --merges -1 --format=%H

Pull Request ベースで開発しているとメインブランチの最新のコミットは原則としてマージコミットになるので、トピックブランチを作るときの起点となるコミットもマージコミットになる。

手元のメインブランチが pull で新しくなると tig で作業中のトピックブランチを眺めたとき、どこから派生したかちょっとだけわかりづらくなるし、 rebase -i の指定がちょっとだけ面倒になる。

メインブランチから直接派生している場合は rebase -i master のようにすればよくて楽だが、 master が派生元でなくなると rebase -i head~N のようにするか、 rebase -i xxxx のようにするか、いずれも対象を調べるのが面倒くさい。

大抵の場合、派生元は(たとえそれがもはや master HEAD などではなくても)直近のマージコミットなので、上記のようなコマンドで探せば事足りる。

git rebase -i $(git log --merges -1 --format=%H)

.gitconfig にエイリアスを定義しておくのもよい。

[alias]
  find-latest-merge-commit   = log --merges -1
  find-latest-merge-commit-1 = log --merges -1 --format=%H
  find-recent-merge-commit   = log --merges -1
  find-recent-merge-commit-1 = log --merges -1 --format=%H