如何使用';git流量';?

如何使用';git流量';?,git,git-merge,redmine,rebase,git-flow,Git,Git Merge,Redmine,Rebase,Git Flow,我通常更喜欢rebase,因为它有一个清晰的历史记录(至少在master分支上) 查看一下,似乎需要使用合并提交。这感觉很难看/不整洁,因为所有的合并提交(我通常会重新基址),但也因为与同一代码相关的多个合并提交(ui-feature1合并到ui-development,然后合并到development,然后合并到master;即使没有ui-development分支,也一样) 改为使用Rebase会更干净/美观,但它会创建重放的重复提交,因此: 了解分支机构的来源(分支机构风险的原因)更为复

我通常更喜欢rebase,因为它有一个清晰的历史记录(至少在
master
分支上)

查看一下,似乎需要使用合并提交。这感觉很难看/不整洁,因为所有的合并提交(我通常会重新基址),但也因为与同一代码相关的多个合并提交(
ui-feature1
合并到
ui-development
,然后合并到
development
,然后合并到
master
;即使没有
ui-development
分支,也一样)

改为使用Rebase会更干净/美观,但它会创建重放的重复提交,因此:

  • 了解分支机构的来源(分支机构风险的原因)更为复杂
  • 需要进行额外维护(某些分支将始终在中重设基础,而其他分支则需要删除并重新创建)
  • ref
    在第一次源提交中出错时,诸如Redmine(其问题/票据可以列出通过提交消息中的
    refs#Redmine issue
    引用它们的所有相应存储库提交)之类的系统将显示源和重定基提交
有中间路线吗? 有什么方法可以很好地集成git流,但仍然存在提交消息中引用的Redmine问题


git-rebase
如何使用git-flow?是否有其他有效的git工作流支持重设基础而不是合并?是否可以在没有合并提交的情况下遵循git流?

您可以在将功能分支合并到
develope
master
到相应的分支之前
重新设置其基础,如下所示:

git checkout feature/my-super-feature
git rebase develop
git checkout develop
git merge feature/my-super-feature
因此,您的
git流中会有更清晰的历史记录,但仍然有成本,因为任何
rebase
都是在重写历史记录,在这种情况下,只针对最后一次提交。所以,你们应该在干净的历史和丰富的信息之间找到平衡。我自己只在功能分支上使用
rebase
,在一次提交中挤压修复,如下所示:

git rebase -i --autosquash HEAD~2

还有一个选项可以使用
merge--squash
合并要素分支。它是最“干净”的,但你失去了你所做的一切。有时它很有用。

Rebase是一种非常常见且有效的Git工作流模式。由于我对git-flow
一无所知,因此我无法进一步评论。