不良マージを修正し、修正されたマージに良好なコミットを再現するにはどうすればよいでしょうか? 質問する

不良マージを修正し、修正されたマージに良好なコミットを再現するにはどうすればよいでしょうか? 質問する

数回前のコミットで、マージを解決中に、不要なファイルを誤っfilename.origてリポジトリにコミットしてしまいましたが、今まで気づきませんでした。リポジトリの履歴からファイルを完全に削除したいと思います。

filename.origそもそもリポジトリに追加されなかった変更履歴を書き換えることは可能ですか?

ベストアンサー1

質問に記載されている状況と異なる場合は、このレシピを使用しないでください。このレシピは、不良マージを修正し、修正されたマージに正常なコミットを再現するためのものです。

filter-branchは必要なことを実行しますが、かなり複雑なコマンドなので、おそらく を使用して実行することを選択しますgit rebase。これはおそらく個人的な好みです。filter-branchは、わずかに複雑な単一のコマンドで実行できますが、rebaseソリューションでは、同等の論理操作を 1 ステップずつ実行しています。

次のレシピを試してみてください:

# create and check out a temporary branch at the location of the bad merge
git checkout -b tmpfix <sha1-of-merge>

# remove the incorrectly added file
git rm somefile.orig

# commit the amended merge
git commit --amend

# go back to the master branch
git checkout master

# replant the master branch onto the corrected merge
git rebase tmpfix

# delete the temporary branch
git branch -d tmpfix

(実際には一時ブランチは必要ないことに注意してください。これは「分離された HEAD」で実行できますが、一時ブランチ名を使用するのではなく、git commit --amendステップによって生成されたコミット ID をメモしてコマンドに提供する必要がありますgit rebase。)

おすすめ記事