首页 > 解决方案 > 通过远程路径和直接通过分支名称签出分支之间的区别?

问题描述

我一直在努力理解 checkout branch by path from remote和 direct by branch name之间的区别。例如下面是分支列表,

remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature/iteration1
remotes/origin/feature/iteration2
remotes/origin/master

现在如果我这样做

git checkout remotes/origin/feature/iteration1

然后它进入分离状态。下面是输出,

在此处输入图像描述

但现在如果我这样做

git checkout feature/iteration1

然后它正确指向分支,下面是输出,

在此处输入图像描述

请任何人都可以解释两个结帐之间的区别以及为什么在通过远程路径签出分支时它会进入分离状态?

标签: git

解决方案


您的第一个分支列表是远程跟踪分支,git 不会将其用作您的其他本地分支。它们不能被检出,只能作为远程存储库分支的参考

当您尝试检出远程跟踪分支时,git 会跟踪该分支指向的提交,并检出,从而导致分离的 HEAD 状态。它允许您检查一些提交,但并不意味着将分支用作本地分支,添加/提交/等。并且仅在您从匹配的存储库中获取时才被修改。


推荐阅读