如何处理 git 中跟踪生成的文件?
How to handle tracked generated files in git?
背景:
我们已经在我们的系统中生成了需要在其最终状态下提交的文件(例如,我们不能依赖源(未生成的)文件并动态生成生成的文件)。由于我们需要生成的文件,因此不能 git 忽略这些文件。
问题:
这些文件在签出和拉取命令时触发了来自 git 的大量 Your local changes to the following files would be overwritten by merge
错误。
当我提取或签出时,我从不关心我的文件是什么,我只关心新文件。 (显然,我非常关心生成文件的源文件。我很高兴看到源文件上的合并警告,它保存在不同的目录中。)
但是,当我提交时,我希望我的版本为 "win" 并提交我生成的文件。
可能的解决方案:
现在我只是 运行 git checkout -- generated-files/
在拉取或签出之前重置我生成的文件并跳过任何合并错误。它有效,但我经常忘记这样做,如果可能的话我想自动化它。
我查看了预结帐和预拉挂钩,但 git 没有提供它们:(
问题:
- 有没有更好的方法来处理生成的文件?
- 有没有办法在拉取或结帐之前将
git checkout -- generated-files/
强制为 运行?
- 如何处理 git 中生成的文件?
我的个人信条:如果文件可以生成,那么只有可以生成它的部分才属于源代码管理。否则,您会遇到很多现在遇到的噪音。
如果生成的文件是真实的、重复的、可重复的步骤并且是构建链的一部分,那么将它们所在的目录添加到您的 .gitignore
文件中是安全的(并且不要忘记 git rm --cached
文件夹,这样他们就不会再被跟踪了)。
如果生成的文件 是 实际源代码的一部分,那么团队成员 and/or 领导之间应该进行对话,并讨论为什么这些文件是如果它们的生成是自动化的,则正在修订中。可能有合理的理由密切关注它们,也可能没有 - 至少值得一问。
我的建议是忽略任何生成的文件,让它们远离 Git。但是,你会想和你的队友谈谈,看看这是不是每个人都想遵守的惯例。
背景:
我们已经在我们的系统中生成了需要在其最终状态下提交的文件(例如,我们不能依赖源(未生成的)文件并动态生成生成的文件)。由于我们需要生成的文件,因此不能 git 忽略这些文件。
问题:
这些文件在签出和拉取命令时触发了来自 git 的大量 Your local changes to the following files would be overwritten by merge
错误。
当我提取或签出时,我从不关心我的文件是什么,我只关心新文件。 (显然,我非常关心生成文件的源文件。我很高兴看到源文件上的合并警告,它保存在不同的目录中。)
但是,当我提交时,我希望我的版本为 "win" 并提交我生成的文件。
可能的解决方案:
现在我只是 运行 git checkout -- generated-files/
在拉取或签出之前重置我生成的文件并跳过任何合并错误。它有效,但我经常忘记这样做,如果可能的话我想自动化它。
我查看了预结帐和预拉挂钩,但 git 没有提供它们:(
问题:
- 有没有更好的方法来处理生成的文件?
- 有没有办法在拉取或结帐之前将
git checkout -- generated-files/
强制为 运行? - 如何处理 git 中生成的文件?
我的个人信条:如果文件可以生成,那么只有可以生成它的部分才属于源代码管理。否则,您会遇到很多现在遇到的噪音。
如果生成的文件是真实的、重复的、可重复的步骤并且是构建链的一部分,那么将它们所在的目录添加到您的 .gitignore
文件中是安全的(并且不要忘记 git rm --cached
文件夹,这样他们就不会再被跟踪了)。
如果生成的文件 是 实际源代码的一部分,那么团队成员 and/or 领导之间应该进行对话,并讨论为什么这些文件是如果它们的生成是自动化的,则正在修订中。可能有合理的理由密切关注它们,也可能没有 - 至少值得一问。
我的建议是忽略任何生成的文件,让它们远离 Git。但是,你会想和你的队友谈谈,看看这是不是每个人都想遵守的惯例。