【歴史が変わったらコレ】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するのは絶対によくない。
だから開発は必ずブランチを切ってやる。
おまけ 書籍
はじめてGitを使うことになったとき、この本を読んだな。懐かしい。