【发布时间】:2015-04-22 19:26:13
【问题描述】:
我将一些提交合并到 master,但现在我需要在新分支上进行这些更改,并且 master 恢复到合并前的状态。
这是提交历史现在的样子:
这就是我想要的样子:
【问题讨论】:
我将一些提交合并到 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 checkout my_new_branch
--hard 会导致索引在您要保留的第一次提交时重置,并且所有修改都将丢失。
一些注意事项: - 如果您已经将主更改推送到遥控器,这不会影响遥控器。至少在我的站点上,我无法推送重置,您必须与遥控器的所有者(或 git 管理员)一起做类似的事情。 - --hard 还应该清理未跟踪的文件,至少我阅读的文档是这样说的,但我不相信它总是会发生。
【讨论】:
3c22fc0,最早的合并),new_branch 包含之后的所有提交。在验证分支包含我想要的内容后,我只需将 new_branch 重命名为 master ,反之亦然,更改 .git/config 文件以反映新的远程分支名称,然后强制 push 两个分支.
如果您在合并后没有提交,您可以简单地将 master 重置为合并前的提交并继续处理前一个分支(假设它只是合并而没有删除)。
如果您在合并后有提交,则必须创建一个分支,然后再恢复合并。
【讨论】: