LoginSignup
2

More than 5 years have passed since last update.

rebase以外でmasterの修正を取り込んでいて、不要なコンフリクトが多発する場合の回避方法

Last updated at Posted at 2017-05-01

ブランチにmasterを取り込む時に下記のようなこともあると思います。

  • masterの修正をmergeコミットで取り込んじゃってた
  • コピペ&コミットで取り込んでた

↑のとき、rebaseで綺麗にするのが大変だったりしますよね。

手順


feature/hoge をターゲットとします。

  • feature/hogeをコピーしてどこかにバックアップしておく
  • feature/hogeをgit reset --hard コミットハッシュする。(masterからブランチを切った時のコミットまで巻き戻す)
  • feature/hogeにmaster最新をmerge or rebaseで取り込む(この時点で、master最新と同じになる。)
  • feature/hogeのフォルダの中身を.gitフォルダ以外消す。
  • バックアップしておいたfeature/hogeの.gitフォルダ以外をコピーで戻す
  • 最後にコミットする。(fast forward出来るはずです。)

注)また、masterの取り込みは完了している前提です。masterの取り込みをしていないのに、上記手順をやってしまうとmasterの修正が消えてしまうので注意してください。

説明


gitは、.gitのフォルダが本体なので、本体をmasterと同じにしてから、ワーキングディレクトリを消し去って、バックアップしておいたワーキングディレクトリをコピーする方法となります。

こうすれば、完全に修正したファイルだけコミットに持って行けます。

注意点としては、このやり方だとコンフリクトが発生しないので、最後のDiffは念入りにやらなければならない点です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2