@kyanny's blog

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

git submodule がコンフリクトしたときの対処法 単に自分が古い場合編

git rebase base したら submodule がコンフリクトしたとする。

- Subproject commit 0345be82604cdc23d27a1eedad2fe3bc84dc2b4d
 -Subproject commit 0dcb11aaa45773cdc1de229eb1bca7b90b9aa886
++Subproject commit e1507fb7c9e7b458b0c896bd1f8d37f7ccbe9612
  • 0345be8 が base branch における submodule のリビジョン。これが最新なのでこちらに合わせたい
  • 0dcb11a は working branch が base branch から分岐したときの submodule のリビジョン。これが 0345be8 と一致してないのでコンフリクトしている
  • e1507fb は working branch で作業中に submodule を更新したときのリビジョン。これは 0345be8 より古いので無視したい

こういう状態になったら、単に submodule のファイルパスを unstage した状態で git rebase --continue すればよい。この diff が無視されて rebase が進行する。