我在做一个项目。
我发现有几个错误开始在我身上发生。我想我做了一些愚蠢的事情,我想检查以前的提交。
所以我首先这样做:
git add .
git commit -am 'half baked code'
我没有把它推上去(因为我不确定我是否打破了什么)。
我接着说:
git checkout xdfsfsfs
在我知道一切正常的地方抓取之前的提交。
我不想回到我的未推本地提交。
git reset --hard
这似乎让我回到了github上的最新提交,而不是本地提交。git log
未显示我的提交
有没有办法恢复本地提交?或者我只需要重新编码?:)
4条答案
按热度按时间z9smfwbn1#
您要查找
git reflog
这显示了git中执行的所有操作,即使没有保存。
要解决这个问题你需要
git reflog
查找您之前所做提交的sha
git checkout SHA
git checkout -b mycommit
现在你可以把它合并到你的母版或任何它需要去的地方。
djp7away2#
git reflog
来拯救我们!这个命令会显示HEAD
最近指向的提交。您可以逐个检查它们,当您找到想要的时,只需
git reset --hard <HASH>
即可。想要的<HASH>
右侧的注解将类似于checkout: moving from <previous branch> to xdfsfsfs
您也可以使用
HEAD@{3}
表示法,但我建议不要使用它,因为每次更改HEAD
时,HEAD@{3}
的含义都会发生变化。作为脚注,你也可以使用
git reflog <branch>
,它会显示分支指向的位置。如果没有分支名称,它会显示HEAD
的reflog
。f0brbegy3#
当你做了
改变了
HEAD
;但是它没有改变任何分支,所以你所要做的就是回到你之前所在的分支,例如,如果你要提交对master
的修改,那么你可以说如果你已经“丢失”了提交,比如重置了分支,那么其他的答案建议reflog也适用。当他们告诉你找到提交并将
reset
返回到它时,这会给你带来麻烦,因为当你执行初始 checkout 时,你进入了分离头状态--这本身是好的,但是如果你重置到提交,你将仍然处于分离头状态。当你想提交更多的代码时这会让你头疼。您执行 checkout 操作是为了离开分支,因此您希望执行 checkout 操作是为了回到分支。
vlju58qv4#
如果您误删除了提交(丢弃提交),Android Studio事件日志将显示一条消息
5:47 PM提交放弃撤消
使用此撤消操作撤消删除