Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;git checkout<;提交id>&引用;正在将分支机构更改为";“无分支机构”;_Git - Fatal编程技术网

&引用;git checkout<;提交id>&引用;正在将分支机构更改为";“无分支机构”;

&引用;git checkout<;提交id>&引用;正在将分支机构更改为";“无分支机构”;,git,Git,我在git的一个分支机构工作。当我这样做的时候 git checkout <commit id> git签出 (commit id从git log)获得),它将被提交到该特定更改,但分支更改为 为什么会这样?你如何解决这个问题 提交是否在另一个分支中Git checkout将切换到另一个分支。如果希望代码出现在第一个分支中,则需要将更改合并到第一个分支中 如果您是分支master并且执行git签出 我相当肯定这会导致git以一种状态加载该提交,从而将您从当前分支中删除 如果您想进

我在git的一个分支机构工作。当我这样做的时候

git checkout <commit id>
git签出
(commit id从
git log
)获得),它将被提交到该特定更改,但分支更改为


为什么会这样?你如何解决这个问题

提交是否在另一个分支中<如果提交发生在另一个分支中,code>Git checkout将切换到另一个分支。如果希望代码出现在第一个分支中,则需要将更改合并到第一个分支中

如果您是分支
master
并且执行
git签出

我相当肯定这会导致git以一种状态加载该提交,从而将您从当前分支中删除


如果您想进行更改,您可以然后执行
git checkout-b
,根据提交和您所做的任何更改创建一个新分支。

如果您直接执行
checkout
提交sha,它会将您置于“分离头”状态,这基本上只是意味着工作副本签出的当前sha没有指向它的分支

如果您还没有进行任何提交,您可以在签出提交sha之前,通过简单地签出您所在的分支来离开分离头状态:

git checkout <branch>

您可以通过签出历史记录中的一个提交来了解更多信息。

您正在将git移动到所谓的“分离状态”,这似乎不是您想要的。使用以下单个命令在历史记录中的一个提交上创建新分支:

git checkout -b <new_branch_name> <SHA1>
git签出-b

其他答案解释了“头部分离”的含义。我试着回答我为什么要这么做。在某些情况下,我更喜欢签出提交而不是签出临时分支

  • 在特定提交时编译/构建(可能是针对您的日常构建或 只是为了发布一些特定的版本给测试团队),我曾经 签出tmp分支,但我需要记住 生成后删除tmp分支。所以我发现签出是一个提交 更方便的是,构建后我只需签出到原来的分支

  • 要检查提交时代码的外观,可能需要调试问题。这个案例与我的案例没有太大的不同#1,我也可以签出tmp分支,但是我需要记住删除它。因此,我选择更频繁地签出提交

  • 这可能只是我的妄想,所以我准备合并另一个分支,但我已经怀疑我会遇到一些合并冲突,我想在合并之前先看到它们。因此,我签出头部提交,然后进行合并,查看合并结果。然后我
    git checkout-f
    切换回我的分支,使用
    -f
    放弃任何合并冲突。我再次发现它比签出tmp分支更方便


  • 当我想签出代码时,这对我来说最有效,因为提交ID

    git获取来源
    git签出-b新分支获取头
    
    我不明白你的问题,你能粘贴命令和输出的序列吗?如果你签出一个提交,你就不再在任何分支上(因为你告诉Git你想在提交上)和的可能重复。
    git fetch origin <commit_id_SHA1>
    git checkout -b new_branch FETCH_HEAD