如何在不从repo中删除文件的情况下停止跟踪文件

时间:2011-08-16 00:08:01

标签: git

我有一个配置文件,我想保留在远程存储库中,但我不想在我的计算机上跟踪它的更改。将它添加到.gitignore并不能解决问题。

我不想跟踪更改的原因是因为根据环境的不同,计算机应该有所不同。

4 个答案:

答案 0 :(得分:83)

如果您想暂时停止跟踪文件,仍可以使用

git update-index --assume-unchanged <file>
// track changes again :
git update-index --no-assume-unchanged <file>

答案 1 :(得分:10)

如果是这种情况,则根本不应该对文件进行版本控制;你应该版本化该文件的模板。例如,如果配置文件是foo/config.txt,那么您应该在存储库中具有带有示例(或空白)配置设置的版本化foo/config.txt.templatefoo/config.txt根本不应该在存储库中,应该使用.gitignore忽略。

然后,在新克隆中,您只需将foo/config.txt.template复制到foo/config.txt并根据需要更改设置。

答案 2 :(得分:0)

您可以提交所有其他文件,并且仅对本地配置进行更改,您可以使用git提供的'stash'功能。

答案 3 :(得分:0)

您需要组合.gitignore文件和git rm --cached。 使用以下命令:

git rm --cached filename.txt

这将从索引中删除文件,但它会将其保存在您的存储库和工作区中。 应用rm --cached后,您需要提交更改才能生效。它会在您跟踪的更改中显示为已删除,但这只是因为它已从索引中删除。 注意:如果在将来的提交中再次对其进行更改,则必须运行:git rm --cached以从特定提交中取消对文件的更改。