gitignore强制添加文件后继续跟踪该文件

9

我在.gitignore中提到了一个文件,但我用git add -f将其添加,因为我想仅添加一次,然后像往常一样将其忽略。

然而,现在它默认被跟踪。 我该如何撤消这个操作?

2个回答

11

我不完全确定你想要什么,但你可以使用以下方法从将来的提交中删除要忽略的文件:

git rm --cached filename

请注意,如果在对一个文件设置忽略规则之前该文件已经被跟踪追踪过,git将不会忽略该文件。在这种情况下,通常需要使用git rm --cached filename命令取消该文件的跟踪。

信息来源:https://help.github.com/articles/ignoring-files

或者你可以告诉git忽略某个文件的更改。

git update-index --assume-unchanged filename

并使用撤销功能来撤回它

git update-index --no-assume-unchanged filename

要列出所有假定未更改的文件,请运行

git ls-files -v|grep '^h'

信息:如何在不影响其他工作副本的情况下.gitignore并删除已提交的文件?

但请注意,假设未更改是(我认为)违背Git的哲学,此命令仅会忽略您机器上所做的更改。其他人仍将能够覆盖它。

在大多数情况下,您使用此选项来处理配置文件。为避免使用此选项,您可以将其保留在.gitignore中,并在README中添加设置说明,或创建一个小型设置脚本来创建这些文件。


我执行了 git rm --cached filename 现在 git status 显示 Changes to be committed: # (use "git reset HEAD ..." to unstage) # # deleted: main/filename - user1632167
是的,从现在开始,git将会忽略main/filename。 - Dominic
2
不是很确定你在寻找什么。只是为了给其他可能阅读此内容的人提供一些背景:如果您想要一个带有空白模板的配置文件,供用户下载但不提交敏感信息,那么这非常有用。至少,这就是我来到这里想要了解如何在git中实现这一点的原因之一。 - Joseph
@joseph4tw 我总是在代码库中放置一个“sample-config”,而不是使用assume-unchanged。(例如.env_sample和.env,config_sample.php和config.php)如果您想添加配置参数并且总是需要更新此文件,则会很麻烦。 - Dominic

1

您可以使用以下方法删除它...

git rm --cached file

然后提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接