git - 通过远程路径和直接通过分支名称签出分支之间的区别?
问题描述
我一直在努力理解 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 会跟踪该分支指向的提交,并检出它,从而导致分离的 HEAD 状态。它允许您检查一些提交,但并不意味着将分支用作本地分支,添加/提交/等。并且仅在您从匹配的存储库中获取时才被修改。
推荐阅读
- javascript - 语言检测陷入循环
- ssl - Airflow KubernetesPodOperator - 将所有文件从一个秘密挂载到一个公共目录
- at-command - 连接然后没有运营商调制解调器问题
- c# - 将 Azure 函数项目添加到解决方案后,一些 tasks.json 文件设置已被删除
- apache - rsync TLS 代理与 Apache:“rsync:服务器发送 'HTTP/1.1 400 Bad Request' 而不是问候”
- gitlab - 如何在 GitLab 项目的常规设置中使用主题?
- java - 确保只有 1 个线程在 Java 中运行
- python - E: 找不到包 psql
- datadog - 用于活动 SFTP 连接的 datadog 中的最佳指标类型
- elasticsearch - 如何在 logstash 管道输出中格式化“cloud_auth”