管理GIT分叉

时间:2012-10-05 13:14:29

标签: git version-control project-management git-fork

来自Git新手的另一个noob问题。

我有一个git repo,两个开发人员在两个不同的叉子上工作。要求是每个人都应该能够独立工作,经过一些更改后,两者都会创建一个拉取请求,我会将他们的工作合并到主回购中。发生这种情况时,两者都会从主仓库中提取更改(通过将其添加为远程仓库)并继续处理最新代码。

我的问题 -

  1. 这是一个很好的方法吗?
  2. 我应该为每个开发人员创建分支,并要求他们在自己的分支中提交,然后合并到master中吗? (看起来对我来说是开销)
  3. 如果两个开发人员都希望访问彼此的代码(他们可以将其他分支作为远程存储库添加,然后与其他代码一起玩,然后尝试进入主要仓库吗?我认为它可能会产生冲突并且是一个糟糕的做法..是吗?)
    主要回购
    / \
    sub1 < - > sub2
    如果sub1将sub2添加为远程仓库并提取更改并稍后尝试为Main repo创建pull请求,则会出现冲突和其他问题,对吧?
  4. 在这种情况下管理代码的其他任何方式吗?
  5. 奖励:如何限制可能暂时工作的一些自由职业者/其他开发人员访问完整代码库? (更多来自管理层而非代码)

1 个答案:

答案 0 :(得分:1)

  1. 图表中描述的关系是完全正确的方法。

  2. 问题2虽然你错过了git的分布式特性。我将尝试描述最简单的例子: 每个开发人员都应该拥有一个带有master分支的repo的克隆。当他们开发时,首选方法是在所谓的功能或主题分支中进行开发。即专用于特定功能或错误修复的分支或其他。这允许并行开发不同的特征。但是这些分支不需要在主线上共享,它们可以并且应该保持在本地(尽管如果需要将它们推送到主线也没有坏处) 现在,如果他们想要在不影响主线的情况下交换他们的代码,他们可以将彼此的repos添加为远程,并根据需要跟踪其他分支。然后,当它真正合并他们的努力并将其推向掌握时,其中一个应该作为一个集成商(或你)处理它的分支在git中非常轻量级,你将开始更频繁地使用分支,你将无法了解你之前是如何在没有分支的情况下工作的。

  3. 另一种方法是在主线上建立集成分支。这可能是主要的,或为该单一目的维护的单独分支。当某个部分在开发方面准备就绪时,开发人员将其本地仓库切换到集成分支,提取最新更改并合并/重新绑定其主题分支,然后将其推回主线

    1. 在上述方案中,开发人员只能访问提交的代码。但是,当然如果他们正在处理同一段代码,那么冲突是可能的。他们必须解决它们,这是任何VCS中的正常工作流程。这里唯一的建议是确保你不会被冲突的大小所淹没,因此你应该使用以下基本策略:
    2. a)更频繁地提交 b)提交作为单个功能单元的较小块,不要提交数百个文件。 c)更频繁地整合

      BONUS:您不能限制对repo的一部分的访问,因此使用面向组件的方法并将事物拆分为不同的repos。这不仅可以实现细粒度的访问管理,而且还可以减少集成量(因为整个代码库不会受到影响,但每次提交都会受到影响),加上它可能会强化更好的设计。