如何从 git 重置被忽略的文件
How to reset ignored file from git
我对忽略的文件进行了一些更改,因此我想通过从远程存储库中拉取它来回滚它。
如果不重新安装存储库怎么办?
重新安装存储库不是正确的术语。您不安装存储库。您要么克隆它,要么从它的遥控器 fetch/pull 更改。
回滚更改是一回事,但在这里你的意思是说你修改了一个被忽略的文件,现在你想将它恢复到以前的状态。
git checkout -- <yourfile>
会将其恢复到更改前的状态,就好像它是从存储库中取出的一样。请记住,git 仅忽略那些当前未被跟踪的文件。所以,如果它在远程存储库中,那么它就被跟踪了。如果您从远程拉取该文件,即使它被添加到 .gitignore
,更改也会显示在 git status
中(您可以对此进行测试)。
但是,如果 git rm --cached
对于那个被忽略的文件是 运行,则它已从 git 中删除,并且应该在删除时创建一个新的提交。如果是这样,则该文件未从远程存储库中克隆。
最后:您可能仍然在本地拥有该未更改文件的副本,并且通过 pull/fetch 操作保留了它。如果您将尝试克隆存储库并签出您正在处理的分支,则不应存在被忽略的文件。否则,git checkout -- <file>
应该可以工作,因为该文件已被主动跟踪。
然后如何取回那个文件
您必须追踪文件所在的最后一次提交。假设它是 12345abc
。现在,继续做 git checkout 12345abc <file>
。请注意,这是强制再次添加和跟踪该文件,您必须小心接下来提交的内容。
通常,您忽略可以由本地环境生成的自动生成文件,and/or 强烈依赖于您的本地环境。如果遵循此策略,您很可能可以在 git 之外还原更改。
我对忽略的文件进行了一些更改,因此我想通过从远程存储库中拉取它来回滚它。 如果不重新安装存储库怎么办?
重新安装存储库不是正确的术语。您不安装存储库。您要么克隆它,要么从它的遥控器 fetch/pull 更改。
回滚更改是一回事,但在这里你的意思是说你修改了一个被忽略的文件,现在你想将它恢复到以前的状态。
git checkout -- <yourfile>
会将其恢复到更改前的状态,就好像它是从存储库中取出的一样。请记住,git 仅忽略那些当前未被跟踪的文件。所以,如果它在远程存储库中,那么它就被跟踪了。如果您从远程拉取该文件,即使它被添加到 .gitignore
,更改也会显示在 git status
中(您可以对此进行测试)。
但是,如果 git rm --cached
对于那个被忽略的文件是 运行,则它已从 git 中删除,并且应该在删除时创建一个新的提交。如果是这样,则该文件未从远程存储库中克隆。
最后:您可能仍然在本地拥有该未更改文件的副本,并且通过 pull/fetch 操作保留了它。如果您将尝试克隆存储库并签出您正在处理的分支,则不应存在被忽略的文件。否则,git checkout -- <file>
应该可以工作,因为该文件已被主动跟踪。
然后如何取回那个文件
您必须追踪文件所在的最后一次提交。假设它是 12345abc
。现在,继续做 git checkout 12345abc <file>
。请注意,这是强制再次添加和跟踪该文件,您必须小心接下来提交的内容。
通常,您忽略可以由本地环境生成的自动生成文件,and/or 强烈依赖于您的本地环境。如果遵循此策略,您很可能可以在 git 之外还原更改。