让我说我master
;我创建了一个从它派生的功能分支,并打开一个PR进行代码审查。在等待批准时,我想合并我本地master
上的功能分支,并继续处理需要该功能的其他内容。这些变化非常简单,不会影响我计划在本地完成的工作。
我该怎么做?
答案 0 :(得分:1)
您只需执行以下命令即可从github获取合并提交,并将本地提交保留在本地master
分支上。
#on local master branch
git pull origin master --rebase
假设将功能分支合并到本地master
分支(作为提交M
)并在master
分支上提交更改(作为提交G
和{{1} }),提交历史记录如下:
H
PR完成后,github / remote ...---A---B---C---M---G---H master
\ /
D---E---F feature
分支上也会有一个合并提交(假设为M'
)。
为了将提交master
从远程仓库提取到您的本地仓库,同时在M'
分支上保留您的本地更改(提交G
和H
),您可以在master
分支上使用命令git pull origin master --rebase
。然后,本地仓库中的提交历史记录将为:
master
答案 1 :(得分:0)
你可以使用rebase和fetch在本地进行最后一次提交和修改,或者以相同的方式合并远程和本地之间的组合,只是合并它们之间的一个区别就是创建新提交。
答案 2 :(得分:0)
这实际上取决于'流程'。一些评论工具对rebase(github,一个)的支持很差,有些人对它非常好(gerrit,bitbucket)。为什么?因为rebase改变了历史。我们假设
master
-feature -review changes
-dependent feature
当重新定位时,您正在将-dependent特征的引用(父提交)从-feature移动到-review更改,从而更改历史记录。这与合并非常不同。关于差异here的文章很好,但我建议您阅读book。
现在,我将从-feature打开一个分支(如图所示),但是在打开PR请求之前(在批准时发生冲突的可能性更小)对于-dependent功能,将-feature合并到主。
使用rebase时要小心,因为改变历史可能会导致噩梦。如果你改变其他人拉动并在其上工作的提交,他/她会恨你很多。不要在公共分支(master / develop)上合并的rebase提交。
希望这有帮助。