假设我使用的是master;我创建了一个从它派生的功能分支,并打开一个PR进行代码审查。在等待批准的同时,我希望合并本地master上的功能分支,并继续处理其他需要该功能的工作。这些变化真的很简单,不会影响我计划在本地做的工作。
我该怎么做?
发布于 2018-05-25 15:32:09
您只需要执行下面的命令来从github获取合并的提交,并将本地提交保留在本地master分支上。
#on local master branch
git pull origin master --rebase假设您将feature分支合并到本地master分支(作为commit M)并在master分支上提交更改(作为commit G和H)之后,提交历史记录如下:
...---A---B---C---M---G---H master
\ /
D---E---F featurePR完成后,github/remote master分支上也会有一个合并的提交(假设它是M')。
为了将提交分支从远程存储库拉到本地存储库,同时在master分支上保留您的本地更改(提交G和H),您可以使用命令git pull origin master --rebase on master分支。则本地存储库中的提交历史记录将为:
...---A---B---C---M'---G'---H' master
\ /
D---E---F feature发布于 2018-05-25 04:24:16
您可以使用rebase和fetch在本地执行上次提交和修改,也可以使用merge在远程和本地之间使用相同的方式进行组合,只需使用其中的一个差异,合并就会创建新的提交。
发布于 2018-05-25 04:28:06
这真的取决于“流”。有些审查工具对rebase的支持很差(比如github),有些则非常好(gerrit,bitbucket)。为什么?因为rebase改变了历史。让我们假设
master
-feature -review changes
-dependent feature当重新建立基础时,您正在将-dependent特性的引用(父提交)从-feature移动到-review更改,从而更改历史记录。这与合并有很大的不同。有一些关于here差异的好文章,但我推荐阅读book。
现在,我将从-feature打开一个分支(如图中所述),但在为-dependent功能打开PR请求(批准时冲突的可能性较小)之前,将重新基于master,将-feature合并到master。
在使用rebase时要小心,因为更改历史可能会导致的噩梦。如果你改变了其他人拉出来并在上面工作的提交,他/她会非常讨厌你。不要对合并在公共分支(master/develop)上的提交进行基址调整。
希望这能有所帮助。
https://stackoverflow.com/questions/50517411
复制相似问题