ろきメモ【ROKI MEMO】- ろきsanの備忘録 -

ろきさんの備忘録。プログラミング学習記録や開発記録、および学んだ知識等のアウトプットとシェアを目的に書いています。たまに普通のことも書きます。

【歴史が変わったらコレ】force pushでリモートの歴史とローカルの歴史が変わってpullできないときにやるコマンド

スポンサーリンク

さて今日はGitについて。


リモートがrebase(+force push)されてて、自分のローカルと歴史が異なるときにpullできなくなる。
そんなとき一番簡単なのはローカルをまるごと削除して、git cloneしなおせばよい。

でももうちょっとスマートな方法があったので、備忘録として残す。


1. fetchで情報取得して、resetで上書きする

ブランチ名が「test-branch」仮定して…

$ git checkout test-branch
(ローカルのtest-branchにチェックアウト)

$ git fetch origin test-branch
(リモートのtest-branchの情報取得→origin/test-branchが最新になる)

$ git reset --hard origin/test-branch
(ローカルのtest-branchが、origin/test-branchの内容に強制的に上書きされる。歴史も。)


これさえ覚えておけばOK!


「force push はするなよ!」という意見があったりするが、これは開発チームによる。
ブランチはforce pushしても良い気がする。
履歴が汚くなったりしたらきれいにしておいたほうがいいし。
ローカルとリモートの歴史が変わっても、上記のコマンドさえチームのメンバー知っていれば、問題ないし。
もちろんmasterのforce pushするのは絶対によくない。
だから開発は必ずブランチを切ってやる。


参考
www-creators.com