【问题标题】:Going back to previous commit in SourceTree回到 SourceTree 中的上一个提交
【发布时间】:2017-07-20 07:23:00
【问题描述】:

我是 Git 新手,我正试图恢复到 SourceTree 中的先前提交。我右键单击要恢复的提交,然后单击结帐。它给了我一个提示,说我的工作副本将成为一个超然的头脑。这是什么意思,这是我应该避免的吗?

【问题讨论】:

标签: git bitbucket commit git-checkout revert


【解决方案1】:

这个问题似乎与 git 不完全相关,但特定于您正在使用的 git 客户端/提供程序(我怀疑是 bitbucket)。

我建议你使用命令行客户端,而不是 Web UI 来更好地学习 git。

在分离的头状态下,您所做的任何更改(和提交)都会从提交树中分离出来,您需要额外的工作才能将该提交放回提交树。通常我们不会对分离的头部状态进行更改,它用于重新排列提交树。但是在分离状态下还是值得尝试的。

【讨论】:

    【解决方案2】:

    根据 Git-Tower 的文章:What's a "detached HEAD" in Git?

    了解“结帐”的工作原理

    使用“git checkout”命令,您可以确定您的哪个版本 你想从事的项目。然后 Git 将所有该修订版的 工作副本文件夹中的文件。

    通常,您使用分支名称与“git checkout”进行通信

    $ git checkout development
    

    不过,您也可以提供特定提交的 SHA1 哈希 而是:

    $ git checkout 56a4e5c08
    Note: checking out '56a4e5c08'.
    
    You are in 'detached HEAD' state...
    

    这个确切的状态 - 当一个特定的提交被签出而不是一个 分支 - 就是所谓的分离的 HEAD

    HEAD 分离的问题

    Git 中的 HEAD 指针决定了你当前的工作版本(以及 从而放置在项目工作中的文件 目录)。通常,在签出正确的分支名称时,Git 当你创建一个新的时自动移动 HEAD 指针 犯罪。您将自动处于所选的最新提交 分支。

    当您选择检查提交哈希时,Git 不会这样做 为你。结果是,当您进行更改并提交时 他们,这些更改不属于任何分支。这意味着他们可以 一旦您签出不同的修订版或分支,很容易迷路:不是 被记录在一个分支的上下文中,你没有可能 轻松访问该状态(除非您有出色的记忆力并且可以 记住那个新提交的提交哈希...)。

    总结: 从 SourceTree,请签出到特定的分支,而不是签出到特定的提交。

    【讨论】:

      【解决方案3】:

      2020 年 12 月 9 日。

      我正在使用 Sourcetree。如果你想去你之前的提交,你可以双击之前的提交。之后,如果您愿意,可以创建一个新分支并与旧分支合并。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 2017-07-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多