将合并的提交移回旧分支,还原主分支并保留更改

Moving merged commits back to old branch, reverting master and keeping changes

我将一些提交合并到 master,但现在我需要在新分支上进行这些更改,并且 master 恢复到合并前的状态。

这是提交历史现在的样子:

我希望它看起来像这样:

我没有看到差异,但相信我理解这个问题,这是我以前做过的事情。

1)新建分支:假设master是当前分支,新建一个分支

c:\git\project> git branch my_new_branch

2) 重置主分支。假设您需要退出最后 4 次提交。

c:\git\project> git reset --hard HEAD~4

3) 在新分支上工作

c:\git\project> git结帐my_new_branch

--hard 会导致索引从您要保留的第一次提交时重置,并且所有修改都将丢失。

一些注意事项: -如果您已经将主更改推送到远程,这不会影响远程。至少在我的网站上,我无法推送重置,你必须与遥控器的所有者(或 git 管理员)合作来做类似的事情。 ---hard 还应该清理未跟踪的文件,至少我读过的文档是这样说的,但我不相信它总是会发生。

如果合并后没有commit,可以简单的将master重置为合并前的commit,继续在之前的分支上工作(假设只是合并,没有删除)。

如果合并后有提交,则必须创建一个分支,然后恢复合并。