在GIT中丢失了我的提交。你能意外删除提交吗?

8

我正在使用git gui,但是我看不到我的分支。

我知道今天已经检查了一些东西。

在提交并通过分支查看器进行验证后,我切换到早期的分支。我对早期分支进行了更改,然后想回到当前分支,但我再也看不到它了。任何帮助都将是极好的。

1个回答

27

回答你的问题,在大多数情况下,意外丢失最近的提交非常困难。通常,对象(包括提交)只有在没有任何分支引用它们并且它们非常古老(默认为90天,如果我没记错的话)时才会在git gc之后被删除。

通常情况下,你可以在reflog中找到提交记录。尝试以下任一命令:

git log -g
或:
git reflog
如果您可以看到它,那么它可能具有形式为HEAD@{n}的引用,其中n是自您丢失提交以来您的HEAD更改的次数。
您可以为其创建一个分支。
git branch foundit HEAD@{n}  # replace n with the correct number

那么你可以决定是否需要将它合并到另一个分支或变基,或者只是保留该分支以备后用。


1
啊..我忘了加-g,非常感谢你。 - baash05
很少丢失提交。提交大概有多老?另一个选项是使用 git fsck 并查看是否有任何悬挂提交,但如果有许多提交,找到正确的提交可能会更难,因为您倾向于单独 git show 很多提交以尝试识别它们。 - CB Bailey
GUI为什么不显示相同的信息?人们使用GUI吗? - baash05
@baash05:可能不适用于查找丢失的提交;命令行通常更强大。但是,GUI 理论上也可以提供此功能,没有特别的原因阻止它这样做。 - CB Bailey
@baash05 - 通常情况下,Git 命令不会丢失提交记录,即使 Git 发生崩溃,你也可以在 reflog 中找到你的提交记录。如果这个回答解决了你的问题,请不要忘记点赞并接受答案。 - orip
@CharlesBailey 非常感谢!你救了我的一整天! - Manoj Attal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接