Sri*_*bat 41
通常:
git revert --mainline 1 dd8cbe3e4
Run Code Online (Sandbox Code Playgroud)
哪里:
dd8cbe3e4
是要撤消的错误合并提交,以及 --mainline
告诉你多个先前提交中的哪一个是要恢复的(请记住,合并提交有多个父提交,你只能保留其中一个).
1
意思,但我的猜测是1,2,3...
对应于之前提交的映射列表dd8cbe3e4
,按升序时间顺序排序(最早的第一个 - 通常是你想要恢复的).资源:
http://thezencoder.com/2013/09/05/how-to-correctly-revert-a-bad-merge-in-git/
简而言之,警告:除了在合并之前将分支实际重置为提交之外,没有真正安全的撤消合并的方法.
现在让我解释一下现有的参考资料.
引用链接的答案如何恢复错误的git合并提交
基本上,恢复合并将撤消数据更改,但不会撤消历史(图形)更改.因此,预计恢复错误的合并不会做任何事情.
当然,重置分支将是最简单的方法,但如果合并的结果已被推送到共享仓库(因为您有效地重写已发布的历史记录),则它具有缺点.
这是故障
git merge <someref>
合并(解决冲突后可选择提交)如果您发现马上要分支重置为在合并之前:
git reset HEAD@{1}
# optionally pass --hard to reset the working tree too
Run Code Online (Sandbox Code Playgroud)如果你才发现,
每次使用reflog来找到合并前的点.(HEAD@{1}
是当前头部参考的先前值的缩写,但是reflog会跟踪头部参考值的有限历史记录)
git reflog
Run Code Online (Sandbox Code Playgroud)重置分支
git reset HEAD@{n} # substitute reflog entry index
Run Code Online (Sandbox Code Playgroud)可选择rebase/cherry-选择合并后提交的提交
git cherry-pick HEAD@{1} # just an example. interactive tools will make this easier
Run Code Online (Sandbox Code Playgroud)另一种(更安全的)方法是在文件的最后一个版本和当前版本之间创建差异,然后通过复制和粘贴来恢复丢失的部分.
这总是有效,不需要任何奇怪的命令行选项,它不会篡改你应该留下的东西:-)
例如,Eclipse有很好的工具来挑选每个个体差异并将其复制到任一版本.只需使用"比较"菜单并排打开两个版本.
归档时间: |
|
查看次数: |
42517 次 |
最近记录: |