gpt4 book ai didi

git - 我真的把我的存储库弄乱了吗?

转载 作者:太空狗 更新时间:2023-10-29 13:51:52 25 4
gpt4 key购买 nike

有点像 git 新手,我想确保我没有对我的 git 存储库造成任何重大损害。基本上,当我搞砸了一些事情时,我使用 git reset --hard HEAD 恢复到我之前的提交。然后我意识到我不想失去我所做的一切,所以我做了一个 git reset HEAD@{1}。这似乎没有任何帮助。然后我尝试了 git reset --hard ORIG_HEAD

所以我想,无论如何,我会重新做一点工作。弄好之后我去push,一直报这个错:

Updates were rejected because the tip of your current branch is behind

我试过 git pull origin 但它一直不允许它,原因有很多我不记得了。

最后,我只是做了一个 git push -f,它似乎运行良好,我的项目又运行良好了。

如果有帮助,这是我的 git reflog 输出:

enter image description here

我很好奇我是否真的搞砸了我推送到的 BitBucket 存储库或我的本地存储库,以便能够再次恢复。有什么方法可以检查我的 git 存储库是否仍在正常运行?

编辑: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.

强制 git push 导致 master 分支采用您的新路径。

还记得我是怎么说放松的吗?好吧,那个提交并没有消失。如果你有你正在使用的原始 repo,它应该仍然在 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

如果您确实需要返回该提交,您可以对该提交和当前主控的 HEAD 进行比较。 git diff 2f2d2ce..HEAD 我为这个问题创建的 repo 协议(protocol)。您也可以随时将其 merge 到 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

有关恢复丢失的提交的更多信息,请查看 git ready's article .

future 笔记

有几点需要指出:git reset --hard 可能很危险,因为它会丢弃所有未提交的更改。如果您有一些想要保留的工作,但不想在此提交中使用,请使用 git stash .

关于git - 我真的把我的存储库弄乱了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com