Git rebase/master 从 branch 变为 master
Git rebase/master changes from branch into master
两个星期前,我创建了一个新分支,我们称它为exp
。在此期间,exp
和 master
中都有几次提交。在此期间 exp
尚未更新 master
的更改
现在我想将 exp
中的所有更改添加到 master 中,而不会丢失我的整个历史记录(即我不想在 master
中只提交一次所有更改,而是我在 exp
中的所有提交都出现在 master
)
的历史记录中
这怎么可能?我调查了 Rebase 但当我调查时:
git checkout exp
git rebase master
在过程结束时,我在 exp
中,当我 git status
时,我看到我在 exp
中所做的所有提交,就好像我想将它们推入 exp
再次
我建议简单地将您的 exp
分支合并到您的 master
。您仍将拥有所有历史记录,并且作为奖励,您将保留所有原始提交时间。
git checkout master
git merge exp
如果您真的想要使用rebase
选项,那么您只需将重新设置基础的exp
分支合并到master
.
git checkout exp
git rebase master
git checkout master
git merge exp
注意: 使用合并(第一个)选项,你最终会得到一个 no-fast-forward 合并(附加提交为你的合并)因为你的分支可能已经分歧。如果您是 GitHub 的拉取请求用户,它会使用这种合并。如果你想对你的第二个(rebase
)选项做同样的事情,你可以添加 --no-ff
选项到你的合并命令。
git merge exp --no-ff
您的目标是将 exp
中的所有提交记录在 master
的历史记录中,并保留您的所有提交。无论您使用 git merge
还是 git rebase
.
都可以实现此目的
合并:
git checkout master
git pull
git checkout exp
git merge master
git push -u origin exp
执行第 2 步,以便您提取最新的 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
时,您的更改是基于 origin
的 master
的最新版本。此外,此命令不会更新 master
.
的本地副本
注意: 如果您使用 git rebase
.
,您可能需要强制推送 (git push -f origin exp
)
两个星期前,我创建了一个新分支,我们称它为exp
。在此期间,exp
和 master
中都有几次提交。在此期间 exp
尚未更新 master
现在我想将 exp
中的所有更改添加到 master 中,而不会丢失我的整个历史记录(即我不想在 master
中只提交一次所有更改,而是我在 exp
中的所有提交都出现在 master
)
这怎么可能?我调查了 Rebase 但当我调查时:
git checkout exp
git rebase master
在过程结束时,我在 exp
中,当我 git status
时,我看到我在 exp
中所做的所有提交,就好像我想将它们推入 exp
再次
我建议简单地将您的 exp
分支合并到您的 master
。您仍将拥有所有历史记录,并且作为奖励,您将保留所有原始提交时间。
git checkout master
git merge exp
如果您真的想要使用rebase
选项,那么您只需将重新设置基础的exp
分支合并到master
.
git checkout exp
git rebase master
git checkout master
git merge exp
注意: 使用合并(第一个)选项,你最终会得到一个 no-fast-forward 合并(附加提交为你的合并)因为你的分支可能已经分歧。如果您是 GitHub 的拉取请求用户,它会使用这种合并。如果你想对你的第二个(rebase
)选项做同样的事情,你可以添加 --no-ff
选项到你的合并命令。
git merge exp --no-ff
您的目标是将 exp
中的所有提交记录在 master
的历史记录中,并保留您的所有提交。无论您使用 git merge
还是 git rebase
.
合并:
git checkout master
git pull
git checkout exp
git merge master
git push -u origin exp
执行第 2 步,以便您提取最新的 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
时,您的更改是基于 origin
的 master
的最新版本。此外,此命令不会更新 master
.
注意: 如果您使用 git rebase
.
git push -f origin exp
)