我有一个关于非标准git分支策略的问题。
我们说我有很多小文件,例如脚本,所有文件都很大程度上彼此无关。让我们说我将它们划分为各种概念分组,然后将每组文件依次提交给不同的空分支。所以我将有一个空的主人和分支,如foo文件,条形文件等,每个文件包含完全不同的文件和文件夹结构。
其他一些要求
分支机构永远不必合并到主机。但根据一些命名惯例,可能彼此可以合并,例如:foo-files-master> FOO-文件-bobswork
我肯定不想要单独的回购,因为在某些情况下,我们只讨论1或2个概念相关的文件,不足以证明管理费用的合理性。单独的回购。
我对将所有目录放在同一个分支上犹豫不决,因为当我只对数千个中的两个感兴趣时,我不想克隆所有文件。
这是否可取?它将来会咬我吗?
我搜索并搜索了有关此方法的任何信息,并没有找到太多信息。我找到了' orphan branches'这看起来很相关。我要去测试一下。但忽略了这一功能一分钟,是否有任何缺点,因为有一堆分支,源于一个空的主人,每个都有一个完全不同的文件结构?
答案 0 :(得分:4)
就像你提到的那样,你可以用孤儿分支来完成这个任务。
git checkout --orphan script-branch
git reset --hard
touch my-script.sh
git add my-script.sh
git commit -m 'Script commit'
现在,如果您执行git log
,则只会看到“脚本提交”#39在历史上。
这种方法没有任何内在错误,但有一些优点和缺点:
优点:
低开销:已经有权访问您的回购的每个人都可以轻松访问您的新分支机构。所有你需要做的就是检查分支机构,你准备好了。
分离:由于您的脚本位于单独的分支中,因此可以单独维护它们并拥有各自的git历史记录。
缺点:
异常组织:通常人们希望分支机构成为主分支的修改版本。您需要向其他开发人员说明您的计划。
无法同时访问两者:在您签出主文件时,您将无法访问脚本,反之亦然。您可以通过两次克隆您的仓库来解决这个问题,但这可能会使事情变得复杂。
重克隆:您提到单独的分支将使您不必克隆整个存储库,但无论如何您都会这样做。如果你正常运行克隆,git将克隆包括你的主分支在内的每个分支,无论你检查了哪个分支。您可以使用--single-branch
标志仅克隆一个分支,但这会使分支在同一个仓库中的效用无效。
备选方案:
在主分支中包含目录中的脚本。是的,这意味着您必须克隆整个存储库才能获取脚本。但如果脚本与主分支中的代码相关,那么这是最简单,最标准的解决方案。
仅为您的脚本创建单个新repo 。然后,您可以使用目录对相关脚本进行分组。这为您节省了为每组脚本设置单独的repo的开销,但仍允许您单独克隆它。