在.gitignore中包含过去提交的文件后恢复它们



我有一个曾经被跟踪过的文件,它是git历史记录中多次提交的一部分。在稍后的某个时候,我将该文件包含在我的.gitignore中。我正在试着恢复那个文件。我试过git reset --hard <sha>,也试过git checkout <branch/remote/file/etc>。这些命令都不能恢复该文件,它不会出现在工作目录中。

注意,我可以在我的git历史记录中看到这个文件。我可以查看我对它所做的更改,如果需要的话,我可以复制粘贴git显示的内容。但是如何从以前的提交历史中恢复这个文件呢?重置和签出似乎对我不起作用,我怀疑这是因为在我将该文件提交给git后,我将它包含在.gitignore中并提交。

(更新)

我已经尝试删除。gitignore,但它仍然无法恢复文件。我重置到文件存在的地方,它不在.gitignore中,但它仍然不会把它带回来。

尝试具体检查文件。使用您知道的提交来包含文件,执行以下操作

git checkout <commit> -- path/to/file

请先删除.gitignore文件再执行命令。(或将其移出存储库)

比如

rm .gitignore
# If the reset doesn't work because of the change, you can add --force
git reset --hard <sha> 

最新更新