git(sourcetree)返回到没有被推送的提交,并且意外地“反转”了

时间:2013-06-12 17:43:39

标签: git atlassian-sourcetree data-loss

我对git修改仍然很陌生,可能只是失去了很多工作(但我希望有一种方法可以回去,这就是我在这里问的原因。)

我在OsX上使用SourceTree进行git修订。 我没有承诺很长一段时间,现在只是想做出很多改变。我选择在提交后立即推送。当推送花了很长时间,我检查了我的文件夹并注意到我不小心选择了一个不应该检入的大型构建文件夹。所以我取消了推送(我得到了一条消息,例如提交成功,但推送不是)。

所以,即使我打断了推送,我仍然在我的主分支中看到了这个提交。我想撤消这个,所以我可以再次提交(这次没有build文件夹)。我右键单击了提交,并且有一个“反向提交...”选项,我点击了它。但是,它没有删除此修订版,而是添加了另一个标记为“Revert”的修订版本我想撤消的提交名称“。”。

不好的是 - 现在我所有的本地更改似乎已经消失,我的文件从一个月前开始处于状态。

因为提交(我取消了推送)仍然在列表中,我想知道我是否能以某种方式回到那里?有没有机会得到我上个月回来的局部变化?我确实备份了我的文件,但这也差不多两周了。

这就是sourcetree目前的样子:

SourceTree Screenshot

正如你所看到的,我之前成功的提交/推送是在20日。然后今天我尝试提交/推送新功能,但在推送期间中断。然后我'反转'这个(中断的)提交,它将我的所有本地文件显然从5开始重置为状态.Sourcetree显示有2个推送(我假设是中断的推送和推送'反向'提交)。

有没有办法可以回到我今天犯下的当地状态?

非常感谢

1 个答案:

答案 0 :(得分:7)

首先撤消 revert 提交,丢弃它创建的更改:

git reset --hard HEAD^

然后撤消更新的渲染图形提交,但在工作树(本地文件)中保留这些更改:

git reset HEAD^