将更改从远程拉到本地合并下方
Pull a change from remote to below a local merge
我确定这一定是骗局,但我找不到合适的词进行搜索...
在 git
遥控器上我们有:
branch ABC A--B--C
branch XYZ X--Y--Z
我在本地合并(是的,我应该开始一个新的分支,但我没有):
branch ABC A--B--C-+-ABC_XYZ
branch XYZ X--Y--Z-/
我在本地测试然后去推送,但是当我一直在测试的时候有人更新了远程 ABC
:
branch ABC A--B--C--D
branch XYZ X--Y--Z
我如何到达:
branch ABC A--B--C--D-+-ABC_XYZ
branch XYZ X--Y--Z----/
疼痛最小?
我试过 git pull --rebase
,但它会尝试重做整个合并,这非常耗时,并且可能会重新引入我之前已修复的合并错误。必须有一个简单的方法来实现这个!
更新:根据提示 in this answer,我得到了这个部分解决方案:
git rebase -p ABC --onto D
git merge ABC_XYZ
现在已经足够好了但还不够完美:
branch ABC A--B--C--D----------+-ABCD_XYZ
| |
+--+-ABC_XYZ--+
|
branch XYZ X--Y--Z--+
我还是很想知道如何做到完美!
顺便说一句,我有 git 2.7.4
,但是 2.18
似乎改进了这个过程。
您可以使用 git rebase
的 --preserve-merges
(简称 -p
)选项:
git rebase -p ABC ABC_XYZ
或者创建一个新分支并重新创建合并。然后根据您的判断清理旧的 ABC_XYZ
分支。
git checkout -b ABC_XYZ_new Z
git merge D
我确定这一定是骗局,但我找不到合适的词进行搜索...
在 git
遥控器上我们有:
branch ABC A--B--C
branch XYZ X--Y--Z
我在本地合并(是的,我应该开始一个新的分支,但我没有):
branch ABC A--B--C-+-ABC_XYZ
branch XYZ X--Y--Z-/
我在本地测试然后去推送,但是当我一直在测试的时候有人更新了远程 ABC
:
branch ABC A--B--C--D
branch XYZ X--Y--Z
我如何到达:
branch ABC A--B--C--D-+-ABC_XYZ
branch XYZ X--Y--Z----/
疼痛最小?
我试过 git pull --rebase
,但它会尝试重做整个合并,这非常耗时,并且可能会重新引入我之前已修复的合并错误。必须有一个简单的方法来实现这个!
更新:根据提示 in this answer,我得到了这个部分解决方案:
git rebase -p ABC --onto D
git merge ABC_XYZ
现在已经足够好了但还不够完美:
branch ABC A--B--C--D----------+-ABCD_XYZ
| |
+--+-ABC_XYZ--+
|
branch XYZ X--Y--Z--+
我还是很想知道如何做到完美!
顺便说一句,我有 git 2.7.4
,但是 2.18
似乎改进了这个过程。
您可以使用 git rebase
的 --preserve-merges
(简称 -p
)选项:
git rebase -p ABC ABC_XYZ
或者创建一个新分支并重新创建合并。然后根据您的判断清理旧的 ABC_XYZ
分支。
git checkout -b ABC_XYZ_new Z
git merge D