git - 是否`/这个 `git checkout` 命令中的` 代表远程分支还是远程跟踪分支?
问题描述
的联机帮助页git checkout
说:
git checkout <branch>
如果
<branch>
未找到,但在一个远程(调用它)中确实存在一个<remote>
具有匹配名称的跟踪分支,则视为等同于$ git checkout -b <branch> --track <remote>/<branch>
其中,手册页git checkout
说,调用
$ git branch -f <branch> <remote>/<branch>
默认情况下带有 -t
选项git branch
(来自手册页git branch
)
-t
创建新分支时,设置
branch.<branch>.remote
和branch.<branch>.merge
配置条目以将起点分支标记为新分支的“上游”。
<remote>/<branch>
在等价的git checkout
命令和git branch
命令中代表什么?
既然
git branch
命令设置branch.<branch>.remote
并branch.<branch>.merge
成为一个远程仓库和一个远程分支,是否<remote>/<branch>
代表远程分支(上游分支)?既然
git branch
命令从 开始创建一个新的本地分支<remote>/<branch>
,是否<remote>/<branch>
代表远程跟踪分支?
解决方案
git help revisions
将告诉您如何解释 refname。
以供参考,
<refname>
, 例如master
,heads/master
,refs/heads/master
一个符号引用名称。例如,master 通常表示 refs/heads/master 引用的提交对象。如果你碰巧有 head/master 和 tags/master,你可以明确地说 head/master 来告诉 Git 你指的是哪一个。当有歧义时,通过以下规则中的第一个匹配来消除 a 的歧义:
- 如果 $GIT_DIR/<refname> 存在,那就是你的意思(这通常只对 HEAD、FETCH_HEAD、ORIG_HEAD、MERGE_HEAD 和 CHERRY_PICK_HEAD 有用);
- 否则, refs/<refname> 如果存在;
- 否则, refs/tags/<refname> 如果存在;
- 否则,如果存在,则为 refs/heads/<refname>;
- 否则, refs/remotes/<refname> 如果存在;
否则,如果存在,则为 refs/remotes/<refname>/HEAD。
HEAD
命名您基于工作树中的更改的提交。FETCH_HEAD 记录您使用最后一次 git fetch 调用从远程存储库中获取的分支。ORIG_HEAD 是由以剧烈方式移动 HEAD 的命令创建的,用于记录 HEAD 在操作之前的位置,以便您可以轻松地将分支的尖端更改回运行它们之前的状态。MERGE_HEAD 记录您在运行 git merge 时要合并到分支中的提交。CHERRY_PICK_HEAD 记录您在运行 git cherry-pick 时挑选的提交。请注意,上述任何 refs/* 案例可能来自 $GIT_DIR/refs 目录或来自 $GIT_DIR/packed-refs 文件。虽然未指定参考名称编码,但首选 UTF-8,因为某些输出处理可能会采用 UTF-8 中的参考名称。
@
@ 单独是 HEAD 的快捷方式。
因此,当您说origin/master
Git 正在那里的存储库中寻找某些东西时,它会根据该列表进行搜索,除非您已经开始使用分支或标签前缀来双关远程名称,否则它会找到远程跟踪 ref refs/remotes/origin/master
。
(请注意,有很多方便的方法可以在 Git 中引用这组或那组修订,请参阅文档)。
推荐阅读
- sql-server - 如何获得学生期末最高分
- amazon-web-services - AWS AppSync 在创建新项目时将多个子项添加到一个父属性中
- java - Java - 减少代码重复 - 一般编码问题
- google-places-api - 谷歌将 sdk 迁移到新的 sdk android
- c - 为什么我在hackerrank中收到此消息“〜stdout上没有响应〜”?我不知道我错过了什么>
- memory - 如何为STM32L475板交换闪存中的两个区域?
- javascript - 无法获取 url 参数
- python - 如何将键移入值和索引作为apache日志中字典中的键
- terminal - 无法在 vs 代码中输入终端
- vue.js - 我该如何使用“
“在用“v-html”呈现的内容中?