我的工作流程如下:
有时,当我尝试进行rebase并合并时,我会遇到冲突。
一种情况是这样的:
我想到了一种可能的方法来避免这种情况,即在主分支批准旧版本分支上的所有先前拉取请求之后,总是分支新版本分支。
但我想知道是否有办法允许rebase和merge而不等待所有旧版本分支成功合并回主分支
么?
答案 0 :(得分:1)
直接在github上为较新版本分支与rebase 合并是不可能的(如果较新的版本分支和旧版本分支都更改了相同的文件)。但是,解决方法是在本地重新定义新版本分支,然后通过PR与rebase合并。我们可以通过下面的图表说明:
假设提交历史原始如下:
G---H V1.2
/
...---A--B--C master
\
D---E---F V1.1
将V1.1
分支与rebase合并到master
分支后,提交历史记录将为:
G---H V1.2
/
...---A--B--C---E'---F' master
\
D---E---F V1.1
如果V1.1
分支和v1.2
分支更改了相同的文件,github pull请求将阻止您将v1.2
合并到master
分支与rebase,因为存在冲突。
解决方案是在PR合并v1.2
到master
完成后,在v1.1
分支的顶部重新定位master
分支。您可以使用本地分支中的命令:
git checkout v1.2
git pull origin master --rebase
# resolve the conflicts in local repo
git pull origin v1.2 -f
然后提交历史记录将是:
G'---H' V1.2
/
...---A--B--C---E'---F' master
\
D---E---F V1.1
现在你可以将V1.2
分支与rebase合并到master
分支,并且github上的PR没有冲突。