我使用一个充满文件的目录(/vendor/bundle/*
)进行了错误的提交。之后我尝试通过更改.gitignore
来修复它,所以我做了另外两次提交。
如何从之前的所有提交中删除/vendor/bundle/*
目录(不影响任何工作文件或其他提交的文件)?
答案 0 :(得分:3)
您可以使用交互式rebase从过去的提交中删除目录:
# Go back 3 commits
git rebase -i HEAD~3
您将看到您的编辑器打开了提交列表:
pick <HEAD~2> Commit /vendor/bundle/*
pick <HEAD~1> OMG ignore /vendor/bundle/*!
pick <HEAD> OMG ignore /vendor/bundle/* again!
选择您提交目录的提交,并将pick
替换为edit
:
edit <HEAD~2> Commit /vendor/bundle/*
pick <HEAD~1> OMG ignore /vendor/bundle/*!
pick <HEAD> OMG ignore /vendor/bundle/* again!
rebase将回退到该提交并停止。然后执行以下操作:
git rm -r -- /vendor/bundle
git commit --amend --no-edit
git rebase --continue
您可以从FREE online Pro Git book了解有关重写git历史记录的更多信息。