Git:如何忽略对跟踪文件的更改?

时间:2018-05-09 11:23:05

标签: git config gitignore

我的项目中有一个包含数据库设置的文件,我已将其设置为某些默认值。该文件由Git跟踪并签入。由于此文件将使用不同的值编辑各种开发人员计算机,我可以告诉Git忽略对此文件的新更改吗?

我尝试将文件添加到.gitignore文件中,但由于文件已被跟踪,因此不会被忽略。这在其他情况下还不错,但我想知道我能在这里做些什么吗?

3 个答案:

答案 0 :(得分:4)

我建议以与实际预期名称不同的方式命名源控制文件。例如,如果文件通常名为config.json,则将您的示例文件命名为config.json.dist并提交此文件。然后将config.json添加到您的.gitignore文件中。您的开发人员在克隆后只需cp config.json.dist config.json,然后根据需要进行编辑,进行后续提交,而不必担心无意中更改默认文件或忘记始终打开和关闭某些设置。

您甚至可以编辑代码以首先搜索config.json,如果不存在,则回退到config.json.dist。这将使开发人员无需执行复制步骤即可工作。 (这就是PHPUnit的工作原理。)

答案 1 :(得分:1)

您可以使用git update-index --assume-unchanged <file>

如果您想再次跟踪它,请使用git update-index --no-assume-unchanged <file>

答案 2 :(得分:0)

一个人可以为此使用git update-index --skip-worktree FILE

它与--assume-unchanged类似,但与--assume-unchangedis not just an unpredictable performance trick不同。

要取消--skip-worktree效果并取消设置标志,请使用--no-skip-worktree

缺点

  • 此标志仅用于本地存储库,不能推送到远程。因此,每个需要忽略文件的克隆都应手动执行。
  • 切换到另一个分支或使用git pull时可能会遇到冲突。 (more details