Git 在升华合并中撤消丢弃的提交
我刚从github桌面切换到sublime merge(这是一个多么大的改进啊),但我只是执行了菜单选项Git 在升华合并中撤消丢弃的提交,git,sublimemerge,Git,Sublimemerge,我刚从github桌面切换到sublime merge(这是一个多么大的改进啊),但我只是执行了菜单选项Edit commit\drop selected commits,认为这相当于github桌面上的undo commit按钮 这并没有撤消我选择的提交(这是树中最近的一个),正如我所想,它已经完全删除了它 我知道有很多帖子都在讨论reflog,当然我会研究这个问题,但是我希望有一个直接的解决方案(如果必要的话,可以使用命令行)来解决这个问题,然后我可以在以后了解更多。假设“drop last
Edit commit\drop selected commits
,认为这相当于github桌面上的undo commit
按钮
这并没有撤消我选择的提交(这是树中最近的一个),正如我所想,它已经完全删除了它
我知道有很多帖子都在讨论reflog,当然我会研究这个问题,但是我希望有一个直接的解决方案(如果必要的话,可以使用命令行)来解决这个问题,然后我可以在以后了解更多。假设“drop last commit”实际上做了类似于git reset——硬头的事情,您可能有机会通过ORIG\u HEAD
检索已删除的提交。也就是说,试着给这个命令一次机会,检查一下你的运气:
git log -3 ORIG_HEAD
如果您能回忆起提交消息,那么在
git fsck--dangling的每个输出上应用git log
将100%为您找到提交,前提是您没有从Sublime Merge执行git gc
,您应该能够通过使用Repository>Undo rebase-i(finish)获得您的提交
从菜单中选择(假设您没有采取任何其他操作),这将撤消放弃提交的重新基准的最后一步。这将使删除的提交重新出现在树中;然后,您可以取消显示所有保留的更改,或者使用重置返回到已知状态。否则,您确实需要使用命令行来执行此操作。太好了,这很有效。我确实尝试了常规的系统“撤销”,它似乎没有做任何事情,但是存储库>撤销
已经恢复了删除的提交。。。所以,现在我知道Repository>Undo
是专门用来撤销最后一个git命令的——如果我是正确的话。很高兴知道。。谢谢。@OdatNurd当我放弃提交时,我没有当前的更改(我刚刚做了一个提交修改,将所有当前更改放回提交中,然后我放弃了该提交)。因此,在运行Repository>Undo
之后,删除的提交又回来了,而且,我还剩下一些未过时的更改,这些更改看起来是(完美的?)恢复提交。这很有趣(我能检查一下我的理解是否正确吗?)——因为最近的提交被带回了,这使得head(我们在丢弃时更改过)现在看起来相对于它被修改了。对吗?谢谢因此,在sublime merge
术语中,要完成修复,我想我只需点击工作目录上的放弃所有
,为了消除剩下的状态,否则会形成完美的“恢复提交”,我们使用存储库>撤消
还原了已删除的提交。我认为您不能对脏工作副本使用任何编辑提交
选项,因此,实际上,您看到的任何更改都是正在进行的重设基础操作的结果。放弃所有的改变会让你回到原来的状态;我认为,您也可以在尝试删除的提交上使用硬重置之类的方法来执行相同的操作。git log-3 ORIG_HEAD
不会显示已删除的提交