1

我正在研究使用 git 进行分支管理的一些更好的点,并基于本文做出了一些决定:

http://nvie.com/posts/a-successful-git-branching-model/

现在我们在这里有一个稍微简单的场景,在远程我们有masterdevelopment_branch. 就所有开发人员而言development_branch,主要是从那里进行克隆,并且只有在我们有稳定版本时才会从开发合并到主库。

现在考虑到这一点,我们每个 sprint 都有一堆故事需要完成,所以我们目前所做的是克隆development_branch然后为我们正在处理的故事/功能创建一个新分支,例如product_description_feature. 然后处理这个本地分支,因此如果我们需要执行另一项任务或进行某种修复,我们可以development_branch返回并从中分支。

现在问题是围绕以这种方式工作的过程,目前安全的选择似乎是以下过程:

  • 克隆development_branch
  • 为任务创建新分支(我们将feature_a在本例中调用它)
  • 提交到feature_a分支直到任务完成
  • 切换到本地development_branch
  • 将任何新的更改从原点拉下来(通常是经常发生的事情)
  • 将更改合并 feature_adevelopment_branch
  • 将本地推development_branch送到原点
  • 为下一个任务创建新分支

现在效果很好,每个人都很高兴,但是在以下场景中你想更频繁地拉取:

  • 克隆development_branch
  • 为任务创建新分支(我们将feature_b在本例中调用它)
  • 提交到feature_b分支
  • 你意识到一个障碍,必须拉最新的变化
  • 切换到development_branch
  • 将原点development_branch拉到本地
  • 切换到feature_b
  • development_branch本地合并到feature_b
  • 继续工作直到完成

现在这看起来很安全,每个人都很高兴,但是我不确定我是否需要切换到development_branch并下拉然后切换回来并合并到我的本地功能分支中。那么我在这里是否过于谨慎,应该从development_branch原产地拉到当地feature_b分支机构?

这似乎应该没问题,因为我所做的只是将更改直接放入我的本地功能分支而不更新我的本地development_branch,然后如果我需要推送更改,我将再次切换、拉取、合并、推送。

那么有人可以确认这是否是好的做法等吗?

也不会过多地污染问题,因为这些功能分支只存在于每台开发人员的机器上,如果有人做了一半的任务,然后其他人需要接手,会发生什么?您可以将该分支推到原点并让他们将其取下然后对其进行处理,但随后需要进一步清理,所以我认为没有很好的方法来解决这个问题,但我很想听听如何其他人解决了这个问题,而不会远程创建一个过时功能分支的荒地。


还有一些需要提及的事情,我们目前只是 ffwd 合并,所以虽然在引用的原始文章中提到了 NOT ffwd 合并,但我看不出如何在不创建大量远程分支的情况下做到这一点。我使用的是 Tortoise GIT 而不是命令行,但这不应该真正改变任何东西。

4

1 回答 1

2

如果您想要来自另一个分支的最新更新,您可以跳过两个分支开关。

git fetch
git merge origin/development_branch

至于您对工作流程的问题,这完全是政策问题。我的工作地点使用项目分支,我们只是自己清楚地确定它们的寿命。我们知道一个分支何时诞生,我们也知道它何时需要死亡。这是使用-d标志删除分支的好处。

git branch -d feature_branch

通过这种方式(而不是使用-D),您可以确保分支已合并回主线。否则它会阻止你。所以,你可以相当自由地使用这个删除命令。

于 2013-04-05T21:17:27.347 回答