Git:如何在不引起合并提交的情况下合并上游更改?

Tha*_*you 6 git git-merge git-rebase git-cherry-pick

我有(提交是按字母顺序创建的)

origin/topic  A-B-C-D-W-X

topic         A-B-C-D-Y-Z
Run Code Online (Sandbox Code Playgroud)

有没有办法让我的topic分支看起来像

A-B-C-D-W-X-Y-Z
Run Code Online (Sandbox Code Playgroud)

没有引入合并提交?


通常我只是这样做

$ git checkout topic
$ git fetch origin
$ git merge --ff-only origin/topic
Run Code Online (Sandbox Code Playgroud)

但由于YZ被犯后WX,快进将无法正常工作.

我怀疑一些聪明的变调或樱桃采摘可能会起作用,但我无法绕过它:{

mam*_*ufo 10

您可以尝试:

git checkout topic
git pull --rebase origin topic
Run Code Online (Sandbox Code Playgroud)

检查有关rebase选项的fetch手册页注释.

我建议使用像git-smart这样的东西,它会在可能的情况下快速前进(更快),如果没有,那么就是一个rebase.如果您有任何更改,它还会隐藏本地更改,并为您提供已拉出的远程更改的摘要.


小智 5

作为mamapitufo答案的替代方案,您还可以执行以下操作,这将为您提供完全相同的结果:

git fetch origin
git rebase origin/topic topic
Run Code Online (Sandbox Code Playgroud)

topic如果已经签出,则最后一个参数是可选的.