【发布时间】:2011-08-16 00:08:00
【问题描述】:
我有一个想要保存在远程存储库中的配置文件,但我不想在我的计算机上跟踪它的更改。将它添加到 .gitignore 并不能解决问题。
我不想跟踪更改的原因是因为它应该根据计算机的环境而有所不同。
【问题讨论】:
标签: git
我有一个想要保存在远程存储库中的配置文件,但我不想在我的计算机上跟踪它的更改。将它添加到 .gitignore 并不能解决问题。
我不想跟踪更改的原因是因为它应该根据计算机的环境而有所不同。
【问题讨论】:
标签: git
如果您想暂时停止跟踪文件,您仍然可以使用
git update-index --assume-unchanged <file>
// track changes again :
git update-index --no-assume-unchanged <file>
【讨论】:
git reset --hard 也会影响这些文件,因此如果为本地配置文件选择这种方法,则必须记住它们无论如何都会被重置,并且在调用 @987654324 时它们的本地更改会丢失@.
git update-index --assume-unchanged <file>时不能切换分支你必须在切换分支之前做git update-index --no-assume-unchanged <file>。如果是这种情况,那么您根本不应该对文件进行版本控制;您应该对文件的模板进行版本控制。例如,如果配置文件是foo/config.txt,那么您应该在存储库中有一个版本化的foo/config.txt.template,并带有示例(或空白)配置设置。 foo/config.txt 根本不应该在存储库中,应该与 .gitignore 一起忽略。
然后,在新的克隆中,您只需将 foo/config.txt.template 复制到 foo/config.txt 并根据需要更改设置。
【讨论】:
您需要将 .gitignore 文件和 git rm --cached 结合起来。 使用以下命令:
git rm --cached 文件名.txt
这将从索引中删除文件,但会将其保留在您的存储库和工作区中。 应用 rm --cached 后,您需要提交更改才能使其生效。它会在您的跟踪更改中显示为已删除,但这仅仅是因为它已从索引中删除。 注意:如果您在以后的提交中再次对其进行更改,则必须运行: git rm --cached 以取消跟踪特定提交中对文件的更改。
【讨论】:
您可以提交所有其他文件,对于本地配置的更改,您可以使用 git 提供的'stash' 功能。
【讨论】: