git - 如何从 git 重置被忽略的文件
问题描述
我对忽略的文件进行了一些更改,所以我想通过从远程存储库中提取它来回滚它。在不重新安装存储库的情况下如何做到这一点?
解决方案
重新安装存储库不是正确的术语。您不安装存储库。您要么克隆它,要么从其远程获取/拉取更改。
回滚更改是一回事,但在这里你的意思是说你修改了一个被忽略的文件,现在你想把它恢复到以前的状态。
git checkout -- <yourfile>
会将其恢复到更改之前的状态,就好像它是从存储库中获取的一样。请记住,git 只会忽略当前未跟踪的那些文件。所以,如果它在远程存储库上,那么它就被跟踪了。如果您从远程提取该文件,即使将其添加到.gitignore
,更改也会显示在中git status
(您可以对此进行测试)。
但是,如果git rm --cached
为那个被忽略的文件运行,那么它就会从 git 中删除,并且应该已经创建了一个新的提交。如果是这样,则不会从远程存储库克隆该文件。
最后:您可能仍然在本地拥有该未更改文件的副本,并通过拉/取操作保留了它。如果您尝试克隆存储库并签出您正在处理的分支,则忽略的文件不应该在那里。否则,git checkout -- <file>
应该可以工作,因为该文件被主动跟踪。
那么如何取回该文件
您必须跟踪文件所在的最后一次提交。假设它是12345abc
。现在,继续做吧git checkout 12345abc <file>
。请注意,这是再次强制添加和跟踪该文件,您必须小心接下来提交的内容。
通常,您会忽略可以由本地环境生成的自动生成的文件,和/或强烈依赖于本地环境的文件。如果遵循此策略,您可能可以在 git 之外恢复更改。
推荐阅读
- android - 如果 PhoneGap Build 失败且没有错误消息怎么办?
- android - 在特定条件下触发通知在 Firebase 上满足
- image - 如何用 PIL 画一个三角形?
- sql - SQL WHERE 子句未过滤到标准 MS-Access
- r - dplyr: summarise(first(...)) 返回列名
- c# - 如何在 Winforms 应用程序中捕获标准输入
- php - 在 HasMany Eloquent 关系中保存多个 ID
- c# - 拆分字符串数组后如何取出值?
- java - 如何在 Spring Rest Request 中访问内部 json 对象
- laravel - 如何打破第二个foreach循环