首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本地合并功能分支,以便在远程代码审查期间继续工作

在本地合并功能分支,以便在远程代码审查期间继续工作
EN

Stack Overflow用户
提问于 2018-05-25 04:11:02
回答 3查看 579关注 0票数 0

假设我使用的是master;我创建了一个从它派生的功能分支,并打开一个PR进行代码审查。在等待批准的同时,我希望合并本地master上的功能分支,并继续处理其他需要该功能的工作。这些变化真的很简单,不会影响我计划在本地做的工作。

我该怎么做?

EN

回答 3

Stack Overflow用户

发布于 2018-05-25 15:32:09

您只需要执行下面的命令来从github获取合并的提交,并将本地提交保留在本地master分支上。

代码语言:javascript
复制
#on local master branch
git pull origin master --rebase

假设您将feature分支合并到本地master分支(作为commit M)并在master分支上提交更改(作为commit GH)之后,提交历史记录如下:

代码语言:javascript
复制
...---A---B---C---M---G---H  master 
       \         /
        D---E---F    feature

PR完成后,github/remote master分支上也会有一个合并的提交(假设它是M')。

为了将提交分支从远程存储库拉到本地存储库,同时在master分支上保留您的本地更改(提交GH),您可以使用命令git pull origin master --rebase on master分支。则本地存储库中的提交历史记录将为:

代码语言:javascript
复制
...---A---B---C---M'---G'---H'  master 
       \         /
        D---E---F    feature
票数 1
EN

Stack Overflow用户

发布于 2018-05-25 04:24:16

您可以使用rebase和fetch在本地执行上次提交和修改,也可以使用merge在远程和本地之间使用相同的方式进行组合,只需使用其中的一个差异,合并就会创建新的提交。

票数 0
EN

Stack Overflow用户

发布于 2018-05-25 04:28:06

这真的取决于“流”。有些审查工具对rebase的支持很差(比如github),有些则非常好(gerrit,bitbucket)。为什么?因为rebase改变了历史。让我们假设

代码语言:javascript
复制
master
      -feature              -review changes
              -dependent feature

当重新建立基础时,您正在将-dependent特性的引用(父提交)从-feature移动到-review更改,从而更改历史记录。这与合并有很大的不同。有一些关于here差异的好文章,但我推荐阅读book

现在,我将从-feature打开一个分支(如图中所述),但在为-dependent功能打开PR请求(批准时冲突的可能性较小)之前,将重新基于master,将-feature合并到master。

在使用rebase时要小心,因为更改历史可能会导致的噩梦。如果你改变了其他人拉出来并在上面工作的提交,他/她会非常讨厌你。不要对合并在公共分支(master/develop)上的提交进行基址调整。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50517411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档