程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了git checkout 分支导致头部分离大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决git checkout 分支导致头部分离?

开发过程中遇到git checkout 分支导致头部分离的问题如何解决?下面主要结合日常开发的经验,给出你关于git checkout 分支导致头部分离的解决方法建议,希望对你解决git checkout 分支导致头部分离有所启发或帮助;

尝试签出我的系统上尚不存在的远程分支。就这个问题而言,我的系统上不存在 3 个分支。

origin/V2.0005B2 origin/V2.0005B3 origin/V2.0005B4 显示远程相关分支的列表:

git checkout V2.0005B2

我可以正常运行 git checkout V2.0005B4git checkout V2.0005B3,它会创建一个本地副本并将其设置为跟踪。

但是当我尝试运行 pageContext 时,它每次都让我处于分离状态。它发生在我试过的每台机器上。

sourceTree 可以很好地检查这个分支以及 git fork。但是Git bash命令行有这个问题。

我只希望这个分支没有问题,否则它似乎工作正常,只要它最初是使用其他实用程序之一检出的。该分支位于 BitBucket,我已登录那里查看是否可以看到任何异常,但它看起来与其他分支相同。

谢谢, 戴夫

解决方法

检查您的本地标签:

git tag --list

如果您有一个名为 V2.0005B3 的标签,运行 git checkout V2.0005B3 将导致您的情况:在该标签指向的提交上的分离 HEAD 状态。

  • 如果你想在那里创建一个分支,运行:
git checkout -b V2.0005B3
git branch -u origin/V2.0005B3

# or shorter suggested by @torek :
git checkout --track origin/V2.0005B3
  • 如果你想删除标签:
# delete your local tag :
git tag -d V2.0005B3

# delete the remote tag :
git push -d origin refs/tags/V2.0005B3

如果这是一个共享仓库,告诉你所有的同事也删除他们的本地标签;这将避免在他们的机器上出现令人惊讶的行为,并减少该标签在中央存储库上可能再次出现的可能性。

,

LeGEC's answer is correct 就这样吧,但我要补充两点。第一个是关于如何得到你想要的,第二个更长的点描述了另一个失败案例和另一个解决它的技巧。

首先,还有一种方法可以从一个相当短的远程跟踪名称创建本地分支,那就是将 git checkout(或 git switch)与 {{1}选项和远程跟踪名称:

--track

这个特殊形式定位远程跟踪名称(全拼git checkout --track origin/V2.0005B3 ),发现它确实是一个远程跟踪名称(以refs/remotes/origin/V2.0005B3开头),应用refs/remotes/选项去除 --track 部分以得出 refs/remotes/origin,然后使用分支创建选项(V2.0005B3 代表 -bgit checkout 代表 {{1} }) 在上游 -c 已经设置的情况下创建 git switch

第二:这个问题的常见原因是Git先找到标签,因为有这样一个标签:

  • V2.0005B3 代码尝试将您首先给它的名称作为现有分支的名称——即尝试在前面添加 origin/V2.0005B3 以查看结果是否会解析为提交哈希ID。如果是这样,这是一个现有分支名称,因此请求切换到该现有分支。

  • 如果那失败,那么它就会转向the gitrevisions documentation中描述的通常的六步过程,它在之前尝试一个标签名称远程跟踪名称。请注意,“尝试将名称作为标签名称”是第 3 步(在第 4 步之前,“尝试将名称作为分支名称”:但是 git checkout 在进入 6 -步骤过程)。

  • 如果没有标签,Git 会转到第 5 步和第 6 步,第 5 步会找到远程跟踪名称。这将稍后调用“DWIM”代码来创建分支,除非您使用refs/heads/ 选项。 (这个选项在 Git 2.21 中是新的。)

但是这种自动创建 git checkout 模式还有另一种失败的方式,那就是如果有两个或更多远程跟踪名称候选。因此,如果同时存在 --no-guess--guess 远程跟踪名称,则猜测模式不知道使用哪个

origin/V2.0005B3 选项告诉 Git 使用哪个选项,从而巧妙地避开了这个困境。还有另一个技巧,也是 Git 2.19 中的新功能:upstream/V2.0005B3 告诉 --trackcheckout.defaultRemote 中的 --guess 代码首选,如果有多个匹配。因此,除了 git checkout 之外,如果问题是多个具有相同分支名称的遥控器,您可以配置首选遥控器以便选择正确的远程跟踪名称。

大佬总结

以上是大佬教程为你收集整理的git checkout 分支导致头部分离全部内容,希望文章能够帮你解决git checkout 分支导致头部分离所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。