我正在研究使用git进行分支管理的一些细节,并根据本文做出一些决定:
http://nvie.com/posts/a-successful-git-branching-model/
现在我们在这里有一个稍微简单的方案,远程来源我们有master
和development_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而不是命令行,但这不应该改变任何东西。
答案 0 :(得分:2)
如果您想要来自其他分支的最新更新,可以跳过两个分支开关。
git fetch
git merge origin/development_branch
关于工作流程的问题,这都是政策问题。我的工作地点使用项目分支,我们只是自己去清楚地指出他们的生命。我们知道分支何时诞生,我们知道何时需要死亡。这是使用-d
标志删除分支的好处。
git branch -d feature_branch
通过这种方式(而不是-D
),您可以确保分支已合并回主线。否则它会阻止你。所以,你可以对这个删除命令相当自由。