将 git 分支专门用于一个单独的项目是否很常见?

Is it common to dedicate a git branch for a separate project?

在我刚加入的团队中,他们有一个 git 以这种方式构建的存储库:

-----------------> Main project
     |-----------> Sub-project1
     |-----------> Sub-project2

因此,开发是在“主项目”主干(和短期分支)中完成的。分支“Sub-project1”和“Sub-project2”包含与主干中的内容无关的代码,即这些分支中的文件不存在。

这是 reasonable/common 使用 git 的方式,还是一般的任何修订控制系统?

没有。这在 git 中并不常见。一般来说,master 分支(主分支,如果你喜欢 github 最新命名法)包含开发代码,位于顶部。应该创建其他分支(您称之为“短期分支”),以便从 master 分支上可用的代码开始应用 fixes/changes/improvements(如果需要,进行大量重构)。通过这种方式,您将能够通过拉取请求合并主分支之上的分支(and/or 合并请求,这里,如果您使用 gitlab 并且更喜欢它的命名法)。这是 git.

中常用的工作方式

没有人能说不能创建“Sub-project1”和“Sub-project2”分支来存储与“Main project”无关的文件。但是,如果出于某种原因,您需要在位于不同 git 存储库的另一个项目中使用这些文件怎么办?如果“Sub-project1”包含您需要的工具怎么办?您是否应该下载整个回购协议(它可能变得巨大...... GB),切换分支,拉取文件?好的,git 部分克隆、稀疏结帐等...可能会有所帮助,但是,通过从一开始就设计一个更好的回购协议来保持一切有序,这不是更好地避免这种复杂性吗?

所以,在这个序言之后,我认为另一个 git 有自己的分支的回购很适合你的情况,而不是分支“Sub-project1”和“Sub-project2”。如果您将来需要将来自“Sub-project1”的内容集成到另一个项目(包括“Main-Project”)中,您可以使用 git submodules。它们应该谨慎使用,但它们在很多情况下都很有用。

这当然不常见,将不同的历史分开是人们学习的事情之一 Git 学习是可能的、明智的、实用的、干净的,但很难指出任何无法补救的缺点。无论哪种方式,您都可以随便为单个分支克隆和创建工作树;您可以通过任何一种方式获取和推送任何历史记录,他们这样做的方式实际上几乎没有什么必然的区别,只是从 Git-aware 的美学观点来看有点不干净。如果所有这些分支都是单个开发工作流程的一部分,那么,是的,一次获取就可以了。所以我不会认为仅仅根据你在这里给出的是不合理的。