如何在git中处理跟踪生成的文件?

时间:2015-12-23 05:58:16

标签: git gulp githooks

背景

我们已经在我们的系统中生成了需要在最终状态下提交的文件(例如,我们不能依赖源(未生成的)文件并在运行中生成生成的文件)。由于我们需要生成的文件,因此无法忽略这些文件。

问题:

这些文件会在checkout和pull命令中从git触发很多Your local changes to the following files would be overwritten by merge错误。

当我拉或结账时,我从不关心我的文件是什么,我只关心新文件。 (显然我非常关心生成文件的源文件。我很高兴源文件上的合并警告,它保存在不同的目录中。)

然而,当我提交时,我希望我的版本能够赢得"赢得"和我生成的文件将被提交。

可能的解决方案:

现在我只需在拉出或结帐前运行git checkout -- generated-files/来重置生成的文件并跳过任何合并错误。它有效,但我经常忘记这样做,如果可能的话,我想自动化它。

我看了一个预检结和预拉钩,但是git没有提供它们:(

问题:

  • 有更好的方法来处理生成的文件吗?
  • 有没有办法强制git checkout -- generated-files/在拉或结账前运行?
  • 你如何处理git中生成的文件?

1 个答案:

答案 0 :(得分:4)

我的个人口头禅:如果可以生成文件,则只有可以生成文件的部分属于源代码管理。否则,你现在遇到很多噪音。

如果生成的文件是真实的,经常性的,可重复的步骤以及构建链的一部分,则可以安全地将它们所在的目录添加到.gitignore文件中(并且不要忘记{{1该文件夹,因此它们不再被跟踪了。)

如果生成的文件 是实际源代码的一部分,那么团队成员和/或潜在客户之间应该进行对话,并讨论如果这些文件的生成是自动化的,这些文件的修订原因。可能有正当理由密切关注它们,而且可能没有 - 至少值得问这个问题。

我的建议是忽略生成的所有文件并将它们保留在Git之外。但是,你会想和你的队友谈谈,看看这是否是每个人都想遵守的惯例。