我在用着git svn
通过公司指定的 svn 服务器获得一些 git 的好处。我刚刚有一个 rebase 出了严重的问题,我正在努力找出最好的恢复方法。
事情是这样的:
-
首先,我有这个
---1 (master)
\--B--C--D--E (feature/fix-widgets)
-
于是我就这么做了git checkout master
进而git svn rebase
在 master 上拉下这些提交。我没有预料到我的功能分支和主分支之间会发生任何冲突,因为更改位于完全不同的文件夹中。所以在这一点上,我想我有这个:
---1--2--3--4 (master)
\--B--C--D--E (feature/fix-widgets)
Where 1--2--3--4
是从 svn 拉入的提交。
接下来我做git checkout feature/fix-widgets
进而git rebase master
。冲突立刻就出现了,而且有些事情不合逻辑,所以我决定溜走,更仔细地审视事情。我愿意git rebase --abort
,希望这能让我恢复到变基之前的状态。
-
I do git rebase --abort
并收到以下消息
$ git rebase --abort
error: git checkout-index: unable to create file somedir/somefile.cs (Permission denied)
fatal: Could not reset index file to revision 'be44daa05be39f6dd0d602486a598b63b6bd2af7'.
现在我不知道该怎么办。git status
显示我正在feature/fix-widgets
,但我有一大堆暂存的更改,以及大量未跟踪的文件,这些文件是之前提交的。如果我能回来就好了E
.
你应该看看ORIG_HEAD https://stackoverflow.com/questions/964876/head-and-orig-head-in-git
ORIG_HEAD
是之前的状态HEAD
,由可能具有危险行为的命令设置,以便于轻松恢复它们。
现在 Git 有了 reflog,它的用处就不那么大了:HEAD@{1}
大致相当于ORIG_HEAD
(HEAD@{1}
始终是最后一个值HEAD
, ORIG_HEAD
是最后一个值HEAD
危险操作前)
所以试试这个git reset http://git-scm.com/docs/git-reset回到任何变基之前:
git reset --hard ORIG_HEAD
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)