将git分支合并到具有出色拉取请求的另一个分支

时间:2017-06-28 16:25:23

标签: git version-control merge atlassian-sourcetree

首先,如果这是重复的话,我道歉,我看了一下,找不到匹配的东西。

我的团队和我最近在使用Git(使用SourceTree GUI)时遇到了一些问题,我希望有人可以提供帮助。我们有一个系统,我们从主分支中获取我们的修补程序分支,并在请求修复后将它们合并到发布候选(RC)分支中。

假设Bob和John都有修补程序,所以他们每个都从master获取一个分支并单独工作。当鲍勃完成他的工作后,他拉出了RC分支并合并了他的变化。这通常很好。

我们遇到的问题是,John偶尔会将他的工作合并到RC分支中,而不会解决Bob提交引起的未完成的请求。然后,SourceTree将弹出一条消息,说John需要拉出RC分支,但这可能会导致合并冲突,并且可能导致(并且已经导致)Bob完全删除的工作,但是它无法合并再次,因为它已经在分支历史中。

我知道明显的答案就是确保在合并之前执行pull请求,但是如果John在没有解析pull请求的情况下进行合并,有没有办法可以保证不会丢失任何工作?

我已经研究了看起来有效的变基,但我对使用它太过警惕,因为RC分支是公开的,并且由团队中的每个人编辑。

1 个答案:

答案 0 :(得分:0)

由于所有开发人员都使用RC分支,因此最好不要重新绑定此分支。 除了拉取请求,您还可以参考其他选项:

1.John直接合并到RC分支,如果以后需要使用Bob的版本,你可以通过樱桃选择重置或重新应用Bob的版本。

# In John’s local repo
git checkout RC
git pull origin RC
git diff  RC..hotfix  #to find the files difference between the branches
git merge hotfix
# modify and solve conflict files
git add .
git commit

如果以后需要保留Bob的版本,可以使用git reset --hard HEAD~并将John的修补程序重新合并到RC中,并解决与其他版本的冲突。或者您可以使用git cherry-pick <commit id Bob merged into RC>重新应用Bpb的版本。

2.如果有QA团队在要更改合并到RC时测试RC分支,John和Bob都可以推送本地修补程序(hotfix_Bob,{{ 1}})分支到远程。然后QA团队测试并将修补程序分支合并到hotfix_John