Git Branching&合并工作流程问题。你怎么做呢?

时间:2013-01-21 10:31:11

标签: git merge workflow branch

这是我们的开发工作流程:

  1. 开发人员处理新主题分支中的问题。
  2. 一旦完成,他就会推动分支审查。
  3. 我将分支合并到一个开发分支中,并在登台服务器上向上游推送。
  4. 客户审核更改并批准/拒绝更改。
  5. 我的问题出在第3步& 4.客户端只能访问登台服务器,所以为了让他看到更改,我必须将主题分支合并到开发分支并将其推送到登台服务器,我通常不会只合并1个分支,但平均为3 - 4。

    如果客户拒绝更改并且需要进一步修改,那么开发人员会在同一主题分支中修复问题,我必须重新开发。

    通过多次重新合并一个主题分支来开发我在历史中的那个问题的松散轨迹。 (有时也会导致冲突)

    这是一个'健康'的开发工作流程吗? 你有什么建议和改进?

2 个答案:

答案 0 :(得分:2)

  

如果客户拒绝更改并且需要进一步修改,那么开发人员会在同一主题分支中修复问题,我必须重新开发。

我宁愿还原(如git revert中)开发分支中被拒绝的更改,并等待开发人员的修复。
通过使用git revert,我只添加新的提交,而不是更改历史记录(使用rebase或git reset

这样,下一次提交(相同功能)应该很容易在开发分支中合并。

答案 1 :(得分:1)

简单地介绍一个临时分支,它是脏的,不允许任何人分支它。

  • 确保您的暂存部署过程处理历史记录重写。如果您的登台服务器来自中央存储库,请使用fetchreset --hard origin/branch
  • 替换拉取
  • 每当您希望客户审核更改时,只需使用之前的流程 - 将其合并,如果需要更改,则重新合并。
  • 偶尔合并develop以确保您完成所有更改。如果您目前没有任何评论(= staging应与develop同步),请将staging重置为develop而不是git checkout staging; {{1 }})
  • 由于分段应该是脏的,你总是可以做一些疯狂的重写,比如回过头几步(git reset --hard develop),如果改变了某些事情就没有后果等。
  • 只有在客户批准后才将您的更改合并到开发中。

通过这种方式,您不必担心在您不关心历史记录(向客户显示内容)的过程中创建一个漂亮的历史记录,并且您的git reset --hard HEAD~4分支获得了非常干净的历史记录。

如果您担心必须多次解决合并冲突,请查看git’s rerere feauture