如何在合并的更改之上重新调整当前分支的更改?

问题描述 投票:0回答:4

好的。如果我在一个分支上(比如

working
),并且我想合并来自另一个分支(比如
master
)的更改,那么我在
git-merge master
分支上运行命令
working
,然后更改会被合并,而无需重新设置历史记录。如果我运行
git-rebase master
,那么
master
中的更改将被重新设置为放置在我的
working
分支的顶部。但是,如果我想合并
master
中的更改,但将
working
中的更改重新设置为最上面,该怎么办?我怎么做?可以做吗?

我可以在我的

git-rebase working
分支上运行
master
将我的更改放在
master
分支的顶部,但我希望能够在我的
working
分支中执行此操作,而且我不知道如何。我能想到的最接近的做法是从
master
创建一个新分支,然后在此基础上重新调整
working
的更改,但随后我将拥有一个新分支,而不是更改
working
分支。

git merge rebase git-rebase
4个回答
317
投票

您已经得到了

rebase
的反向功能。
git rebase master
执行您所要求的操作 - 获取当前分支上的更改(因为它与主分支不同)并在
master
之上重播它们,然后将当前分支的头设置为新分支的头历史。它不会重播当前分支顶部
master
的更改。


85
投票

另一种看待它的方法是将

git rebase master
视为:

重新设置当前分支之上

master

这里,“

master
”是上游分支,这解释了为什么在变基期间,
ours
theirs
是相反的


4
投票

在 master 之上重新调整当前更改时,您可以:

  1. 下拉最新master:
    git pull <remote_name> master
  2. 签出您想要将更改更改为的分支:
    git checkout <branch_name>
  3. 执行变基:
    git rebase master

允许您将远程分支(例如,origin/master)的更改重新设置到本地分支而无需在本地更新远程分支的替代路径是:

git rebase origin/master


0
投票

如果维护者要求您rebase重新推送您的PR,您可以在CLI上遵循以下过程:

git switch blead # making sure I'm in "main"
git pull # update local with remote
git switch blead-3 # branch of this PR

git rebase blead # put this commit on top
git push --force # re-push after rebasing

在 Windows 上尝试过,其中 GitHub 要求通过网络浏览器进行授权。

© www.soinside.com 2019 - 2024. All rights reserved.