ブランチに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は念入りにやらなければならない点です。