在本地合并功能分支以在远程代码检查中继续工作

时间:2018-05-24 20:11:02

标签: git github version-control project-management

让我说我master;我创建了一个从它派生的功能分支,并打开一个PR进行代码审查。在等待批准时,我想合并我本地master上的功能分支,并继续处理需要该功能的其他内容。这些变化非常简单,不会影响我计划在本地完成的工作。

我该怎么做?

3 个答案:

答案 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'分支上保留您的本地更改(提交GH),您可以在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提交。

希望这有帮助。