Git撤消还原

时间:2017-07-16 14:33:26

标签: eclipse git

我正在使用Eclipse。而且,今天,我决定推出我在两周内写的所有代码。但是,我在提交的消息中犯了一个错误,所有的更改,所以我点击了Eclipse的Git透视图的“Revert”。但是,在这两周内我写的所有代码都不再是工作树了!

所以,我做了git log并得到了这个:

commit dd2401c076f4e34f2bdfb642f0ef4ab1dc476458
Date:   Sun Jul 16 15:03:40 2017 +0100

Revert "Rewrited the Linear Plan Tree. Renamed the planner/node package to"

This reverts commit 9240fd696fbe827e58a8eb827014125b7b1b5bb1.

commit 9240fd696fbe827e58a8eb827014125b7b1b5bb1
Date:   Sun Jul 16 15:02:20 2017 +0100

Rewrited the Linear Plan Tree. Renamed the planner/node package to

所以,我执行了这个命令:git reset --soft HEAD~1

但是,在我的文件浏览器中,我写的所有文件仍然被删除,现在,git log向我显示:

commit 9240fd696fbe827e58a8eb827014125b7b1b5bb1
Author: Lucas Willems <lwillems@clipper.ens.fr>
Date:   Sun Jul 16 15:02:20 2017 +0100

Rewrited the Linear Plan Tree. Renamed the planner/node package to

我的代码是否会永久删除?有没有办法让它回来?非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我建议您从Git bash中执行以下步骤:

git stash
git checkout yourBranch
git revert dd2401c0
git stash apply

此处的基本策略是存储当前的工作目录,然后还原还原提交。是的,两个恢复相互抵消。

此处执行git reset的问题是它会移动分支的HEAD。这似乎会产生副作用,即您编写的任何新文件都会被删除。在任何情况下,执行重置都会重写分支的历史记录,如果分支可以由其他人共享,这是不理想的。

答案 1 :(得分:0)

我认为你应该运行git reset --hard HEAD~1 intead“soft”。 “软”意味着工作vopy和索引不会更新,因此在文件系统ig仍然看起来像还原。你现在要跑git reset --hard。运行git statusgit diff HEAD以检查是否存在您可能要保留的某些未提交的更改

是有意义的