Dou*_*ith 3 git github bitbucket
一点git新手,我想确保我没有对我的git存储库造成任何重大损害.基本上,我曾经git reset --hard HEAD恢复到我之前的提交,因为我搞砸了一些事情.然后我意识到我不想失去我所做的一切,所以我做了一个git reset HEAD@{1}.哪个似乎没有任何帮助.然后我试了一下git reset --hard ORIG_HEAD.
所以我想,无论如何,我会做一点点的工作.我做了之后,我去推它,我一直收到这个错误:
更新被拒绝,因为您当前分支的提示落后
我尝试了,git pull origin并且由于一些我无法完全记住的原因而不允许它.
最后,我刚刚做了一个git push -f,它似乎工作正常,我的项目再次运作良好.
git reflog如果它有帮助,这是我的输出:

我只是好奇,如果我真的搞砸了我推到的BitBucket存储库或我能够再次恢复的本地存储库.有没有办法检查我的git repo是否仍然正常运行?
编辑:BitBucket还说我"剥离"了一个提交......
放松.
为了减轻您的顾虑,请在另一个目录中克隆另一个副本.然后检查一下并引入您想要推送的新代码.一切都会成功.
根据您的文本,我认为您可能已经重新编写了master的提交历史/树,因为git reset HEAD@{1}后面是git reset --hard ORIG_HEAD.正是通过你说的话,我也"丢失"了一次提交.
这可能是您看到的错误消息.
20:19:44 (master) ~/code/wat/so_test$ git push
To git@github.com:rgbkrk/so_test.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:rgbkrk/so_test.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)
强制git push导致master分支占用你的新路径.
还记得我说过放松吗?好吧,那个提交并没有消失.如果你有你正在工作的原始回购,它应该仍然在git reflog,但不是在git log.它就在那边晃来晃去.
2b47149 HEAD@{2}: commit: The bad commit
01346b9 HEAD@{3}: reset: moving to ORIG_HEAD
42af608 HEAD@{4}: reset: moving to HEAD@{3}
01346b9 HEAD@{5}: reset: moving to HEAD@{1}
2f2d2ce HEAD@{6}: commit: More junk text
01346b9 HEAD@{7}: commit: Text
42af608 HEAD@{8}: clone: from git@github.com:rgbkrk/so_test.git
Run Code Online (Sandbox Code Playgroud)
如果您确实需要提交,则可以在该提交和当前主服务器的HEAD上执行diff.git diff 2f2d2ce..HEAD在我为这个问题创建的回购的情况下.您也可以将它合并到master中.
找到"无法访问"提交的简单方法是使用git fsck,确保启用--no-reflogs.
20:48:02 (master) ~/code/wat/so_test$ git fsck --unreachable --no-reflogs
Checking object directories: 100% (256/256), done.
Checking objects: 100% (5/5), done.
unreachable tree 0ca2f12b74de7a33f6dc62374a85d982a96531ce
unreachable commit 2f2d2ce1b6591f0e7a5f67af81a125231ee2e9a1
unreachable blob bcb7bae71bbdfb79ba31ee41e4aa3a11b1ad2f7f
Run Code Online (Sandbox Code Playgroud)
有关恢复丢失提交的更多信息,请查看git ready的文章.
要指出的事情:git reset --hard可能很危险,因为它会丢弃所有未提交的更改.如果您想要保留一些工作,但不想在此提交中使用,请使用git stash.