Git rebase/master 更改从分支到 master

use*_*022 5 git git-rebase

两周前,我创建了一个新分支,我们称之为exp. 在此期间,在exp和 中都有几次提交master。在此期间exp尚未更新与更改master

现在我想将所有更改从expmaster 中获取,而不会丢失我的整个历史记录(即我不想只对master所有更改进行一次提交,而是我所有的提交都exp出现在 的历史记录中master

这怎么可能?我已经研究过Rebase,但是当我这样做时:

git checkout exp
git rebase master
Run Code Online (Sandbox Code Playgroud)

在流程结束时exp,当我git status看到我所做的所有提交时,exp就好像我想exp再次将它们推入

pro*_*fan 5

您的目标是拥有expinmaster的历史记录中的所有提交并保留您的所有提交。无论您使用git mergegit rebase.

合并:

git checkout master
git pull
git checkout exp
git merge master
git push -u origin exp
Run Code Online (Sandbox Code Playgroud)

执行第 2 步,以便您提取最新版本master并进行最新更改。

重新定位:

git checkout exp
git pull --rebase origin master
git push -u origin exp
Run Code Online (Sandbox Code Playgroud)

如果您不想master在此过程中更新您的本地,您也可以执行以下步骤:

git checkout master
git pull
git checkout exp
git rebase master
git push -u origin exp
Run Code Online (Sandbox Code Playgroud)

请注意,当您git pull --rebase origin master进行更改时,您的更改基于最新版本originmaster. 此外,此命令不会更新master.

注意:您可能需要力推(git push -f origin exp如果您正在使用)git rebase