Git rebase/master 从分支更改为 master

标签 git git-rebase

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

的更改

现在我想把所有从 exp 到 master 的更改都保存下来,而不丢失我的整个历史记录(即我不想在 master 中只提交一次所有的更改,而是我在 exp 中的所有提交都出现在 master 的历史记录中)

这怎么可能?我调查了Rebase但是当我这样做时:

git checkout exp
git rebase master

在过程结束时,我在 exp 中,当我 git status 时,我看到我在 exp 中所做的所有提交为如果我想再次将它们 push exp

最佳答案

您的目标是让 master 历史中 exp 中的所有提交并保留您的所有提交。无论您使用 git merge 还是 git rebase,您都可以实现这一点。

merge :

git checkout master
git pull
git checkout exp
git merge master
git push -u origin exp

执行第 2 步,以便您 pull 最新的 master 并进行最新的更改。

重置:

git checkout exp
git pull --rebase origin master
git push -u origin exp

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

git checkout master
git pull
git checkout exp
git rebase master
git push -u origin exp

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

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

关于Git rebase/master 从分支更改为 master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38010726/

相关文章:

git - "git reset"和 "git rebase"有什么区别?

windows - Windows 上的 git 克隆

git - 使用 git 追加分支提交

Git:定期 merge/重新设置长期存在的错误修复分支以掌握

Git rebase --onto : atal: Needed a single revision

git - 如何在 aptana 中禁用 git?或者关掉它?

git - 使用我的更改解决 merge 冲突

Android Studio 更新项目 : Merge vs Rebase vs Branch Default

git - Mercurial 相当于 "git pull --rebase"

git - 将整个git分支重新设置为孤立分支,同时保持提交树完整