使用git管理本地功能分支的最佳方法?

时间:2013-04-05 15:48:07

标签: git branching-and-merging feature-branch

我正在研究使用git进行分支管理的一些细节,并根据本文做出一些决定:

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

现在我们在这里有一个稍微简单的方案,远程来源我们有masterdevelopment_branch。就所有开发人员而言,development_branch是克隆的主要场所,我们只有在稳定发布时才从开发合并到master。

现在考虑到这一点,我们需要通过每个sprint的一堆故事,所以我们目前所做的是克隆development_branch然后为我们正在处理的故事/功能创建一个新分支,例如product_description_feature。然后对这个本地分支进行处理,如果我们需要选择另一个任务或进行某种修复,我们就可以使用干净的development_branch来返回并从中分支。

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

  • 克隆development_branch
  • 为任务创建新分支(在此示例中我们将其称为feature_a
  • 提交到feature_a分支,直到任务完成
  • 切换到本地development_branch
  • 从原点拉下任何新的更改(通常是常见的事情)
  • feature_a的更改合并到development_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,然后如果我需要推送更改我会再次切换,拉动,合并,推动。

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

同样不会过多地污染问题,因为这些功能分支只存在于每台开发人员的计算机上,如果有人做了一半任务,那么其他人需要拿起它?您可以将该分支推送到原点并让它们将其删除,然后对其进行处理,但随后需要进一步清理,因此我假设没有漂亮的方法来解决此问题但我很想知道其他人如何解决这个问题,而不会远程创建过时功能分支的荒地。


还有一些其他的事情需要提及,我们目前只是合并,所以尽管在原始文章中引用它并未提及合并但我无法看到如何在不创建大量远程分支的情况下实现这一目标。我使用Tortoise GIT而不是命令行,但这不应该改变任何东西。

1 个答案:

答案 0 :(得分:2)

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

git fetch
git merge origin/development_branch

关于工作流程的问题,这都是政策问题。我的工作地点使用项目分支,我们只是自己去清楚地指出他们的生命。我们知道分支何时诞生,我们知道何时需要死亡。这是使用-d标志删除分支的好处。

git branch -d feature_branch

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