我应该使用Git分支来存储无关的代码吗?

我应该使用Git分支来存储无关的代码吗?,git,version-control,branch,Git,Version Control,Branch,我有一个关于非标准git分支策略的问题 比如说,我有很多小文件,比如脚本,它们基本上彼此不相关。假设我将这些文件分成不同的概念组,然后将每组文件依次提交到不同的空分支。因此,我将有一个空的主文件和分支,如foo文件,bar文件等,每个包含完全不同的文件和文件夹结构 其他一些要求 分支永远不必合并为主分支。但根据一些命名约定,它们可能相互兼容,比如:foo files master>foo files bobswork 我绝对不想要单独的回购,因为在某些情况下,我们只讨论1或2个概念上相关的文件

我有一个关于非标准git分支策略的问题

比如说,我有很多小文件,比如脚本,它们基本上彼此不相关。假设我将这些文件分成不同的概念组,然后将每组文件依次提交到不同的空分支。因此,我将有一个空的主文件和分支,如foo文件,bar文件等,每个包含完全不同的文件和文件夹结构

其他一些要求

  • 分支永远不必合并为主分支。但根据一些命名约定,它们可能相互兼容,比如:foo files master>foo files bobswork

  • 我绝对不想要单独的回购,因为在某些情况下,我们只讨论1或2个概念上相关的文件,不足以证明单独回购的管理开销是合理的

  • 我很犹豫是否将所有目录放在同一个分支上,因为我不想在只对两千个目录感兴趣时克隆所有文件

这样做明智吗?将来它会咬我吗


我搜索了很多关于这种方法的信息,没有找到多少。我找到了似乎相关的“”。我要测试一下这个。但是,暂时忽略这一特性,拥有一堆来自空主机的分支,每个分支都具有完全不同的文件结构,这有什么坏处吗?正如您所提到的,您可以使用孤立分支来实现这一点

git checkout --orphan script-branch
git reset --hard
touch my-script.sh
git add my-script.sh
git commit -m 'Script commit'
现在,如果您执行一个
git日志
,您将只在历史记录中看到“脚本提交”

这种方法本身没有什么错,但有一些优点和缺点:

优点:

  • 低管理费用:您的新分支机构很容易被所有已经有权访问您的回购协议的人访问。你所要做的就是结帐,然后你就可以出发了

  • 分离:由于脚本位于单独的分支中,因此它们可以单独维护,并具有各自的git历史记录

缺点:

  • 不寻常的组织:通常人们希望分支是主分支的修改版本。您需要向其他开发人员说明您的方案

  • 不能同时访问这两个脚本:当您签出master时,您将无法访问脚本,反之亦然。你可以通过克隆你的回购协议两次来解决这个问题,但这可能会使事情复杂化

  • 重克隆:您提到单独的分支将使您不必克隆整个存储库,但无论如何您都会这样做。如果您正常运行克隆,git将克隆每个分支,包括您的主分支,而不管您签出了哪个分支。您可以使用
    --single branch
    标志仅克隆一个分支,但这会在某种程度上使分支位于同一repo中的实用程序无效

备选方案:

  • 将脚本包含在主分支的目录中。是的,这意味着您必须克隆整个存储库才能获取脚本。但是,如果脚本与主分支中的代码相关,那么这是最简单、最标准的解决方案

  • 仅为您的脚本创建一个新回购协议。然后可以使用目录对相关脚本进行分组。这为您节省了为每组脚本单独创建repo的开销,但仍然允许您单独克隆它


这个想法看起来很奇怪,出乎意料,为什么不干脆开始一个新项目呢..是的。我知道这是一个相当左的领域。我以前从未见过这样做,但除了“气味难闻”之外,我无法解释为什么这是一个坏主意,我不想要一个单独的项目或仅用于2个文件的回购。分支被认为是“熟悉事物的另一种外观”,而不是“完全不同的事物”
git
及其分支是工具。没有任何技术限制会阻止您这样做。所以这只是常规。我遇到的唯一问题是做
git签出的时间可能很重要。谢谢你这么好的回复。