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

标签 git gulp githooks

背景:

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

问题:

这些文件触发了很多 您对以下文件的本地更改将被 git 的 merge 错误覆盖在 checkout 和 pull 命令上。

当我提取或 check out 时,我从不关心我的文件是什么,我只关心新文件。 (显然,我非常关心生成文件的源文件。我很高兴看到源文件上的 merge 警告,该文件保存在不同的目录中。)

但是,当我提交时,我希望我的版本“获胜”并提交我生成的文件。

可能的解决方案:

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

我查看了预 checkout 和预 pull Hook ,但 git 没有提供它们:(

问题:

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

最佳答案

我的个人信条:如果文件可以生成,那么只有可以生成它的部分才属于源代码管理。否则,您会遇到很多现在遇到的噪音。

如果生成的文件是真实的、重复的、可重复的步骤并且是构建链的一部分,那么将它们所在的目录添加到您的 .gitignore 文件中是安全的(并且不要忘记到 git rm --cached 文件夹,这样它们就不会再被跟踪了)​​。

如果生成的文件实际源代码的一部分,那么团队成员和/或领导之间应该进行对话,并讨论如果这些文件是自动生成的,为什么要修改这些文件.可能有合理的理由密切关注它们,也可能没有 - 至少值得一问。

我的建议是忽略任何生成的文件并将它们排除在 Git 之外。但是,您需要与您的队友交谈,看看这是不是每个人都想遵守的惯例。

关于git - 如何在 git 中处理跟踪生成的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34429515/

相关文章:

Git 按文件 ID 添加

git - 使用 msysgit 进行字符编码

Git push 不退出

javascript - 当我使用 gulp 和 browserify 时,我的 javascript 模块无法工作

javascript - 如何在 gulp-if 中应用 ng-annotate 和 uglify?

git - 暂停文件观察器直到 git checkout 完成

具有多个不同 Remote 的 git 工作流程

ruby - 在 Windows 10 上安装 RHC 客户端工具 (Openshift)

git - 自动将提交消息附加到 Git 中提交的文件

git post-receive hook 抓取提交消息并回发到 URL