首页 > 解决方案 > 如何从 git 重置被忽略的文件

问题描述

我对忽略的文件进行了一些更改,所以我想通过从远程存储库中提取它来回滚它。在不重新安装存储库的情况下如何做到这一点?

标签: gitgitignore

解决方案


重新安装存储库不是正确的术语。您不安装存储库。您要么克隆它,要么从其远程获取/拉取更改。

回滚更改是一回事,但在这里你的意思是说你修改了一个被忽略的文件,现在你想把它恢复到以前的状态。

git checkout -- <yourfile>会将其恢复到更改之前的状态,就好像它是从存储库中获取的一样。请记住,git 只会忽略当前未跟踪的那些文件。所以,如果它在远程存储库上,那么它就被跟踪了。如果您从远程提取该文件,即使将其添加到.gitignore,更改也会显示在中git status(您可以对此进行测试)。

但是,如果git rm --cached为那个被忽略的文件运行,那么它就会从 git 中删除,并且应该已经创建了一个新的提交。如果是这样,则不会从远程存储库克隆该文件。

最后:您可能仍然在本地拥有该未更改文件的副本,并通过拉/取操作保留了它。如果您尝试克隆存储库并签出您正在处理的分支,则忽略的文件不应该在那里。否则,git checkout -- <file>应该可以工作,因为该文件被主动跟踪。

那么如何取回该文件

您必须跟踪文件所在的最后一次提交。假设它是12345abc。现在,继续做吧git checkout 12345abc <file>。请注意,这是再次强制添加和跟踪该文件,您必须小心接下来提交的内容。

通常,您会忽略可以由本地环境生成的自动生成的文件,和/或强烈依赖于本地环境的文件。如果遵循此策略,您可能可以在 git 之外恢复更改。


推荐阅读