在Git中跨分支共享文件

Jon*_*ust 17 git version-control branch git-branch

我的项目中有一堆文件有时被修改但总是在许多不同的分支之间共享.示例包括构建脚本,包含路径的批处理文件等.甚至.gitignore文件本身也是一个示例.

我想在源代码管理中使用这些东西,但我不希望各个分支跟踪它们的变化.

你是如何处理这种情况的?

你在Git中跟踪与你的项目有关的一切吗?你对共享对象有什么看法?

.gitignore是我唯一的选择吗?

nul*_*ken 5

你有没有考虑过git-subtree,而不是依赖子模块?

文档中所述:

不要将子树与用于相同任务的子模块混淆。

与子模块不同,子树不需要任何特殊结构(如 .gitmodule 文件或 gitlinks)出现在您的存储库中,并且不会强迫存储库的最终用户做任何特殊的事情或了解子树的工作原理。

子树只是一个子目录,可以以任何您想要的方式与您的项目一起提交、分支和合并。

以下是一些提供一些反馈并解释子树优于子模块的帖子的帖子:

一个非常有趣(而且有点热)的帖子,来自 git 邮件列表,讨论了 git-subtree 和 submodule 的优缺点

  • @Jonathon:事实上,您*总是*需要一个单独的存储库来存储您的共享文件。git-submodule 和 git-subtree 只是帮助您从另一个存储库访问这些共享文件的工具。选择一种或另一种工具只是一个品味问题。最终用户似乎喜欢 git-subtree(我也喜欢),核心 Git 专家/贡献者更喜欢子模块。:-) (2认同)

Gra*_*and 4

将构建脚本和批处理文件保存在单独的存储库中?

  • @meagar 这是真的,但是“单独的存储库”并不意味着子模块。 (4认同)
  • 这很接近(将它们维护在远程存储库中),但我认为子模块会更合适。 (3认同)