僕のチームではfixupコミットを多用しており、force pushがよく使われます。しかし、force pushを多用しているとレビュー時などにローカルブランチのコミットログとリモートブランチのコミットログが変わってしまいpullだとうまくいかないことが多いです。
こういう時にローカルにあるブランチをリモートブランチと完全に同期させたい、みたいな気持ちになることが多いのですが、それをgit reset --hard
を使えばできることを知ったので紹介します。
git reset --hard
を使う時HEAD
とかHEAD~
とかをオプションで渡すことが多いと思うのですが、ここでブランチを指定すると、そのブランチのHEADを指定したのと同じ意味になります。
結論から行ってしまうと
git reset --hard 今のブランチと同期させたいリモートブランチ
みたいな書き方でリモートブランチと完全同期させることができます。
例(hoge
のbranchを完全同期させる場合)
git fetch
git checkout hoge
git reset --hard origin/hoge