【问题标题】:Lost my commit in GIT. Can you accidentally delete commits?在 GIT 中丢失了我的提交。你会不小心删除提交吗?
【发布时间】:2011-01-30 13:24:56
【问题描述】:

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

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

在完成提交并使用分支查看器验证它之后,我更改为较早的分支。 我对之前的分支进行了更改,然后想回到我当前的分支,但我再也看不到它了。 任何帮助都会很棒。

【问题讨论】:

    标签: git commit


    【解决方案1】:

    在回答您的问题时,在大多数情况下,很难意外丢失最近的提交。通常对象(包括提交)只有在 git gc 之后才会被删除,前提是它们不再被任何分支引用并且它们非常旧(默认情况下为 90 天 IIRC)。

    通常你可以在你的 reflog 中找到提交。尝试以下任一:

    git log -g
    

    或:

    git reflog
    

    如果你能看到它,它可能有一个 HEAD@{n} 形式的引用,其中 n 是你的 HEAD 自你丢失的提交以来发生变化的次数。

    你可以为它创建一个分支。

    git branch foundit HEAD@{n}  # replace n with the correct number
    

    然后您可以决定是否需要将其合并到另一个分支或重新设置它或只是保留分支以供以后使用。

    【讨论】:

    • 啊.. 我忘记了 -g 非常感谢
    • 很少会丢失提交。提交的时间大约是多少?另一种选择是使用git fsck 并查看您是否有任何悬空提交,但如果您有很多悬空提交,则可能更难找到正确的提交,因为您往往不得不git show 单独进行大量提交以尝试识别他们。
    • gui 不显示相同信息的任何原因?人们使用 GUI 吗?
    • @baash05:可能不是为了寻找丢失的提交;命令行通常更强大。不过,GUI 无法提供此功能并没有什么特别的原因。
    • @baash05 - 通常 git 命令不会丢失提交,即使 git 严重崩溃,您也可以在 reflog 中找到您的提交。如果它解决了您的问题,请不要忘记投票并接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多