管理GIT分叉

管理GIT分叉,git,version-control,project-management,git-fork,Git,Version Control,Project Management,Git Fork,另一个来自Git新手的noob问题 我有一个git回购,两个开发人员在两个不同的分叉上工作。要求是每个人都应该能够独立工作,在一些更改之后,两者都将创建一个拉请求,我将把他们的工作合并到主回购中。当这种情况发生时,两者都将从主回购中提取更改(通过将其添加为远程),并继续处理最新代码 我的问题- 这是一个好的方法吗 我是否应该为每个开发人员创建分支,并要求他们在自己的分支中提交,然后合并到master中?(在我看来像是头顶) 如果两个开发人员都希望访问彼此的代码(他们是否可以添加其他fork作为远

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

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

我的问题-

  • 这是一个好的方法吗
  • 我是否应该为每个开发人员创建分支,并要求他们在自己的分支中提交,然后合并到master中?(在我看来像是头顶)
  • 如果两个开发人员都希望访问彼此的代码(他们是否可以添加其他fork作为远程存储库,然后使用彼此的代码,然后尝试推到主repo中?我认为这可能会产生冲突,是一种不好的做法……是吗?)
    主回购
    /\
    sub1sub2
    如果sub1将sub2添加为远程回购,并引入更改,然后尝试为主回购创建请求,那么会出现冲突和其他问题,对吗
  • 在这样的情况下,还有其他管理代码的方法吗
  • 奖励:如何限制一些自由职业者/其他可能暂时工作的开发人员访问完整的代码库?(更多的是从管理角度而非代码角度)

  • 图表中描述的关系是完全正确的

  • 在问题2中,尽管您遗漏了git的分布式特性的一点。我将尝试描述最简单的示例: 每个开发人员都应该有一个带有主分支的repo克隆。当他们开发时,首选的方法是在所谓的功能或主题分支中开发。即专门用于特定功能或错误修复或其他方面的分支。这允许并行开发不同的功能。但是这些分支不需要在主线上共享,它们可以而且应该保持本地(尽管如果需要的话,将它们推到主线上不会有什么坏处) 现在,如果他们想在不影响主线的情况下交换代码,他们可以将彼此的repo添加为远程,并根据需要跟踪彼此的分支。然后,当实际需要合并他们的工作并将其推到掌握的时候,他们中的一个应该作为一个集成者(或您)来处理它。git中的分支非常轻量级,您将开始更频繁地使用分支,您将无法理解在没有分支的情况下如何工作

  • 另一种方法是在主线上有一个集成分支。这可能是主分支,也可能是为该单一目的而维护的单独分支。当某个部分在开发端准备就绪时,开发人员将其本地repo切换到集成分支,提取最新的更改并合并/重定主题分支,然后将其推回到主线

  • 在上述方案中,开发人员将只能访问提交的代码。当然,如果他们在处理同一段代码,冲突是可能的。他们必须解决这些问题,这是任何风投公司的正常工作流程。这里唯一的建议是确保您不会被冲突的规模所压倒,因此您应该使用以下基本策略:
  • a) 更频繁地承诺 b) 提交单个功能单元的较小块,不提交数百个文件。 c) 更频繁地整合


    好处:您不能限制对回购协议某一部分的访问,所以请使用面向组件的方法,将内容拆分为不同的回购协议。这不仅允许细粒度的访问管理,还将减少集成量(因为不是整个代码库都会受到影响,而是每次提交都会受到影响),另外,它还可以实施更好的设计。

    这似乎是一种合理的方法,但是,如果在自己的分支上而不是在主分支上开发拉请求,则处理拉请求会更容易。不幸的是,限制对完整代码库的访问的唯一方法是将内容拆分为单独的存储库,并且只允许访问这些存储库。将某人的repo添加为远程repo并不好。这很令人困惑。通过推送到主回购(远程)共享代码的一般做法。为了使回购更加安全,您可以在开发等分支机构中推动不稳定的变更。测试更改后,您可以将其合并到主分支中。感谢@Eugene提供详细答案。