如何在我执行git重置后恢复提交
我已经在一个项目上进行了几个月的定期提交。 我使用Heroku来存储我的应用程序。 我推送到Heroku,然后我用Git GUI将我的文件回滚到12月7日,然后我将它推送到Heroku。 我试图恢复一个特定的文件夹,但没有意识到它会恢复整个目录。
然后我意识到我从12月7日起就失去了所有的承诺。
我试过git lost-found,我的目录在reflog中有20个头。 我正在寻找一个特定的提交,我有来自Heroku的散列。 它是8d4f84a,但是当我做git checkout 8d4f84a时,它给了我错误“在工作树中找不到未知版本或路径。”
我做了一次heroku回滚,并将Heroku上的文件恢复到之前的推送状态,但我无法克隆这些文件。
我在这一点上失去了所有的工作吗?
编辑:附上reflog,充满了约会到12月7日和回来的旧承诺
eb64161 HEAD@{0}: checkout: moving from 4d6a18311433a9bee737eda9bf6114f8bc35fa2c
4d6a183 HEAD@{1}: checkout: moving from master to HEAD@{3}
eb64161 HEAD@{2}: checkout: moving from eb64161f29fff57ab861880c4cd1cdf7641c39bf
eb64161 HEAD@{3}: checkout: moving from master to master@{2013-01-19}
eb64161 HEAD@{4}: pull: Fast-forward
4d6a183 HEAD@{5}: checkout: moving from 7e1ae4e7907f446d7d238741933509d4d64e0715
7e1ae4e HEAD@{6}: checkout: moving from 60299f452350c05d22e6bd703f1a7658112c171f
60299f4 HEAD@{7}: checkout: moving from 8e58a900f13132e0dcaa39ae980f7868184cbf65
8e58a90 HEAD@{8}: checkout: moving from 49f004a3d08ee52ee24334c07fc9d35c40480dbb
49f004a HEAD@{9}: checkout: moving from 4374fecebf215eb868beb881af8909922d45e764
4374fec HEAD@{10}: checkout: moving from 13a4a7e00c15986e07c48969f026afb2fe02f60
13a4a7e HEAD@{11}: checkout: moving from master to 13a4a7e00c15986e07c48969f026a
4d6a183 HEAD@{12}: reset: moving to HEAD@{20}
6eb9a8e HEAD@{13}: reset: moving to HEAD@{1}
0964917 HEAD@{14}: reset: moving to HEAD~1
6eb9a8e HEAD@{15}: reset: moving to HEAD~1
e6474e3 HEAD@{16}: reset: moving to HEAD~1
821fe87 HEAD@{17}: reset: moving to HEAD~1
04bd607 HEAD@{18}: reset: moving to HEAD~1
4173f0d HEAD@{19}: reset: moving to HEAD~1
6f15ad8 HEAD@{20}: reset: moving to HEAD~1
a847ccd HEAD@{21}: reset: moving to HEAD~1
498d2e7 HEAD@{22}: reset: moving to HEAD~1
fe2772d HEAD@{23}: reset: moving to HEAD~1
是的,你可以做到这一点,打开混帐控制台,并把
git reflog
之后你会得到提交列表
git reset --hard "hash of commit which you need"
如果你想让你的新头像是8d4f84a,那就去做吧
git reset --hard 8d4f84a
重置也适用于这个方向。
git reflog
显示有史以来创建的所有提交对象。 我猜测一个被删除的提交对象的生命周期是60天。 所以如果提交时间不长,那么你可以做一些像git cherry-pick your-commit-hash
。 在使用git show
之前,可以使用git show
来检查代码。 希望这可以帮助。