0

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

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

我的问题-

  1. 这是一个很好的方法吗?
  2. 我应该为每个开发人员创建分支并要求他们在自己的分支中提交,然后合并到 master 中吗?(对我来说看起来像是开销)
  3. 如果两个开发人员都想访问彼此的代码怎么办(他们可以将其他分支添加为远程存储库,然后互相玩其他代码,然后再尝试推送到主存储库中吗?我认为这可能会产生冲突并且是一种不好的做法。 . 是吗?)
         Main repo
            / \
    sub1 <--> sub2
    如果 sub1 添加 sub2 作为远程 repo 并拉入更改,然后尝试为 Main repo 创建拉取请求,会出现冲突和其他问题,对吗?
  4. 在这种情况下管理代码的任何其他方式?

奖励:如何限制某些可能临时工作的自由职业者/其他开发人员访问完整代码库?(更多的是从管理的角度而不是代码)

4

1 回答 1

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

  2. 在问题 2 中,尽管您缺少 git 的分布式特性。我将尝试描述一个最简单的例子:每个开发人员都应该有一个带有 master 分支的 repo 克隆。当他们开发时,首选的方法是在所谓的功能或主题分支中进行开发。即专门用于特定功能或错误修复或其他的分支。这允许并行开发不同的功能。但是这些分支不需要在主线上共享,它们可以而且应该保持在本地(尽管如果需要将它们推送到主线并没有什么坏处)现在如果他们想在不影响您的主线的情况下交换代码,他们可以添加彼此作为远程仓库并根据需要跟踪彼此的分支。那么当它'

另一种方法是在主线上有一个集成分支。这可能是主分支,也可能是为该单一目的维护的单独分支。当开发人员准备好某些部分时,开发人员将其本地存储库切换到集成分支,拉取最新更改并合并/重新设置他的主题分支,然后将其推回主线

  1. 在上述方案中,开发人员只能访问已提交的代码。但当然,如果他们正在处理同一段代码,冲突是可能的。他们必须解决这些问题,这是任何 VCS 中的正常工作流程。这里唯一的建议是确保您不会被冲突的规模所淹没,因此您应该使用以下基本策略:

a) 更频繁地提交 b) 提交单个功能单元的较小块,不要提交数百个文件。c) 更频繁地整合

奖励:您不能限制对 repo 的一部分的访问,因此请使用面向组件的方法并将内容拆分为不同的 repo。这不仅可以实现精细的访问管理,还可以减少集成的数量(因为不是整个代码库都受到影响,而是每次提交都受到影响),另外它可能会强制执行更好的设计。

于 2012-10-05T16:15:19.373 回答