将合并的提交移回旧分支,还原主分支并保留更改
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,继续在之前的分支上工作(假设只是合并,没有删除)。
如果合并后有提交,则必须创建一个分支,然后恢复合并。
我将一些提交合并到 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,继续在之前的分支上工作(假设只是合并,没有删除)。
如果合并后有提交,则必须创建一个分支,然后恢复合并。