Git恢复本地提交

v2g6jxz6  于 2022-12-21  发布在  Git
关注(0)|答案(4)|浏览(160)

我在做一个项目。
我发现有几个错误开始在我身上发生。我想我做了一些愚蠢的事情,我想检查以前的提交。
所以我首先这样做:

git add .
git commit -am 'half baked code'

我没有把它推上去(因为我不确定我是否打破了什么)。
我接着说:

git checkout xdfsfsfs

在我知道一切正常的地方抓取之前的提交。
我不想回到我的未推本地提交。

git reset --hard

这似乎让我回到了github上的最新提交,而不是本地提交。
git log未显示我的提交
有没有办法恢复本地提交?或者我只需要重新编码?:)

z9smfwbn

z9smfwbn1#

您要查找git reflog
这显示了git中执行的所有操作,即使没有保存。
要解决这个问题你需要
git reflog
查找您之前所做提交的sha
git checkout SHA
git checkout -b mycommit
现在你可以把它合并到你的母版或任何它需要去的地方。

djp7away

djp7away2#

git reflog来拯救我们!这个命令会显示HEAD最近指向的提交。
您可以逐个检查它们,当您找到想要的时,只需git reset --hard <HASH>即可。想要的<HASH>右侧的注解将类似于checkout: moving from <previous branch> to xdfsfsfs
您也可以使用HEAD@{3}表示法,但我建议不要使用它,因为每次更改HEAD时,HEAD@{3}的含义都会发生变化。
作为脚注,你也可以使用git reflog <branch>,它会显示分支指向的位置。如果没有分支名称,它会显示HEADreflog

f0brbegy

f0brbegy3#

当你做了

git checkout xdfsfsfs

改变了HEAD;但是它没有改变任何分支,所以你所要做的就是回到你之前所在的分支,例如,如果你要提交对master的修改,那么你可以说

git checkout master

如果你已经“丢失”了提交,比如重置了分支,那么其他的答案建议reflog也适用。当他们告诉你找到提交并将reset返回到它时,这会给你带来麻烦,因为当你执行初始 checkout 时,你进入了分离头状态--这本身是好的,但是如果你重置到提交,你将仍然处于分离头状态。当你想提交更多的代码时这会让你头疼。
您执行 checkout 操作是为了离开分支,因此您希望执行 checkout 操作是为了回到分支。

vlju58qv

vlju58qv4#

如果您误删除了提交(丢弃提交),Android Studio事件日志将显示一条消息
5:47 PM提交放弃撤消
使用此撤消操作撤消删除

相关问题