如何改变过去提交包含错过的文件?

我已经做了一个更改,并忘记将文件添加到更改集。 在其他提交之后,我意识到这个文件现在从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一个更多的提交来解决这个问题。