2014年2月21日金曜日

gitでローカルブランチをリモートブランチの内容で上書きする

gitでサブモジュールを使っていて、そのサブモジュールはリモートリポジトリからコードを引っ張ってくるためだけの目的で使っている場合、そのサブモジュールの内容は自分ではいじることはなくて、単にリモートリポジトリのコピーであればいい。

で、サブモジュールの内容を最新に更新しなきゃな―、って思って pullしたときに、衝突がワンサカ出た。リモートリポジトリ側でブランチがきちんと管理されていればこういう衝突は起こらないはずだが、まあそこは何か事情もあるのだろうし、完璧を求めても仕方ない。

ってことで、今回はmasterブランチを使っているので、ローカルのmasterブランチをリモートのmasterブランチの内容で強制的に上書きしてやることにする。masterブランチをチェックアウトした状態で、

git fetch origin
git reset --hard origin/master

でOK。すでに"git pull origin"してconflict警告が出た状態なら1行目は不要。

余談だけれど、"git pull origin"は結局"git fetch origin"と"git merge origin/ブランチ名"を一緒にやっているだけだから、pullは使わなくて良かったりする。今回のようなこともあるし、次回からはpullは使うのやめようかな。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿