数回前のコミットで、マージを解決中に、不要なファイルを誤っ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
。)