GIT:不止一个开发人员在使用同一个功能

时间:2016-06-13 17:01:44

标签: git merge gitlab git-workflow

我对以下方案的最佳工作流程有疑问。

目前有2个分支机构:

  • 发展

master仅通过批准的合并请求接受代码。

鉴于2位开发人员正在使用相同的功能,不同的部分,这是为此功能创建合并请求的最佳方式:

  1. 每个开发人员都创建自己的? (他们彼此都有代码,因为为了进步,他们直接相互推拉)
    • 这不会导致问题,因为第一次创建合并请求会有其他更改吗?一次推送一个提交将是非常乏味的。也许只保留一个只有本地更改的分支并创建集成分支?但是合并请求本身并不起作用,也没有多大意义。
  2. 其中一个为两者创建了“完整”的合并请求?
    • 审核它变得更大,因为它有更多代码,我们不能同时拥有合并请求的2个所有者

3 个答案:

答案 0 :(得分:2)

如果两个开发人员不是独立的,我建议你选择方法2,一个开发人员创建一个包含两个工作的合并请求。但是,你可以通过以下方式减少这一点:

- 让每个开发人员以较小的部分对他们的工作进行代码审查。虽然这不会避免对进入主分支的整个工作进行代码审查,但肯定会使拒绝不那么像。

- 对于大型功能,只要有可能,每个开发人员都应该生成不依赖于其他工作的较小的作业部分(“原子提交”),然后可以将此部分合并到开发分支中并从其他开发人员处获取继续他的工作。这样,当功能完成时,它已经存在于开发分支中,而不是开发人员的主题分支。

根据您的描述,我相信您的开发人员将拥有包含所有工作的主题分支。你不能轻易地从主题分支的角度分开。因此,请选择2号方法并由两位开发人员签名。

答案 1 :(得分:1)

创建一个程序员可以使用的单个功能分支(来自master)。两位工程师都应该使用"atomic commits",以便审阅者的工作很简单。如果在此功能开发期间有许多其他工程师合并掌握,请从master执行定期rebasing以确保构建完整性。

答案 2 :(得分:0)

Forked workflow在这种情况下变得非常有吸引力(并且适用于Github),它使用pull请求将开发人员的个人分支发送回主存储库的存储库。

  • '来源'远程指向开发人员在服务器上的项目的个人分支(通常存储在Github上的个人区域等)。
  • '上游'某些服务器上的官方存储库中的远程点。
  • '显影'定期合并到主人'在官方存储库中(从不相反)
  • 两个人的发展'和#'掌握'在官方存储库中应始终干净地构建/测试。
  • 开发人员根据开发创建一个本地分支,以处理故事的特定问题/子集。
  • 当代码准备好进行审核并通过所有测试时,他们再次将其本地分支重新开发,然后将git push分支机构更改为其私有fork存储库并从其私有fork创建pull请求/分支到主存储库/开发分支。

假设开发人员有一个名为' i903-issue-of-issue' (903是我们的github问题编号),他们需要反对开发:

git fetch upstream
git checkout development
git merge --ff-only upstream/development
git checkout i903-description-of-issue
git rebase development
git push origin i903-description-of-issue

因此,开发人员有责任确保他们的个人分支始终与官方的“开发”保持一致。主存储库上的分支(通过变基)。它使用pull请求将多个提交合并到主要的“开发”中。科。 Github(和其他工具)中的这种拉取请求模型允许在接受PR之前进行代码审查。

如果它将成为破坏性功能分支,将破坏持续部署“开发”的能力。分支到QA服务器,然后您可能需要将新功能分解为较小的位,以减少破坏性。