如何改变过去提交包含错过的文件?
我已经做了一个更改,并忘记将文件添加到更改集。 在其他提交之后,我意识到这个文件现在从HEAD^4
提交中丢失了。
如何重写以前的提交以包含丢失的文件?
使用git rebase --interactive HEAD~4
并为您想要修改的提交设置edit
选项。
请记住,您不应该以这种方式修改推送到远程存储库的提交。 在这种情况下最好添加一个缺less文件的提交。
我意识到人们可以谷歌,来到这里find一个更简单的答案: 如果这只是最后一次提交? (OP的问题是修复第四次提交历史)
如果您提交并意识到您忘记了立即添加文件,请执行以下操作:
# edited file-that-i-remember.txt git add file-that-i-remember.txt git commit # realize you forgot a file git add file-that-i-forgot.txt git commit --amend --no-edit
其中--no-edit
将保持相同的提交消息。
十分简单!
如果你没有推这4个提交,你可以这样做:
为所有这些提交创build补丁文件:
git format-patch -4
倒退4次提交:
git reset --hard HEAD~4
添加缺less的文件:
git add missing-file
用--amend
提交:
git commit --amend
应用所有保存的补丁:
git am *.patch
如果您推送了,则不应使用此方法。 相反,只要承认你的错误,并在HEAD之上创build一个更多的提交来解决这个问题。