简短的答案是“不行,你甚至不应该尝试”。
“远程跟踪分支名称”并不是一个分支,尽管它被称为“远程跟踪分支名称”。相反,它是你的 Git 记忆中另一个 Git 的分支名称。这有几个目的,包括创建自己的分支名称从这些远程跟踪名称。
在 Git 中,分支或标签名称(如 master 或 v1.1)是 Git 提供的一种设备,让你为一个(单一的)哈希 ID 分配一个可读的名称。这些哈希 ID 通常是提交的 ID。(正常的例外情况出现在标签上,它们可以命名标记对象,然后命名提交;这是 Git 实现注释标签的方法。)
使(本地)分支名称特殊的是它们具有唯一的属性,即您可以通过使用分支名称运行 git checkout "进入" 它们。一旦你这样做了,git status 将会显示像 "on branch master" 这样的东西。而且 - 这是真正的特殊技巧 - 如果你现在创建一个新的提交,Git 将自动将新提交的哈希 ID 存储在当前分支名称中,即你正在 "on" 的那个分支名称。
作为另一个特殊技巧,如果你告诉 Git 进入一些分支名称 B,并且分支名称 B 目前不存在,则 Git 将扫描你的远程跟踪名称集合,例如 origin/master 和 origin/B。如果它找到恰好一个这样的名称,它将:
- 创建一个新的名称 B
- 指向与 origin/B 相同的提交
- 并设置为跟踪 origin/B
(这些术语特别不幸:本地分支名称“跟踪”“远程跟踪”分支名称,根据远程命名,并且每一个这些东西都是本地的!)
每次运行 git fetch origin 时,你的 Git 调用另一个 Git,在与名为 origin 的远程关联的 URL 上。其他 Git 告诉你的 Git 它现在有哪些分支名称,以及这些名称所对应的提交 ID。你的 Git 下载任何新的提交,并在此时更新你的远程跟踪名称以匹配它们的名称,更新你的 Git 对其 Git 中的内容的记忆。因此,即使你使用远程跟踪名称做了一些事情,每次 git fetch 都会抹掉你所有的努力。
请注意,一旦您有了一个名为
B
的分支,它就与您的
origin/B
无关,除非您指示Git执行某些操作以重新与您的
origin/B
同步。您可以在
git fetch
之后执行此操作,先将
origin/B
与
origin
上的Git同步,然后将您的
B
与您的
origin/B
同步。
(Git提供了两步“同步,然后再次同步”的便捷命令
git pull
,但对于任何刚开始使用Git的人,我建议避免使用此命令-它做得太多,有时做得不好;当某些事情失败时,它会让你陷入无法恢复的混乱状态,因为你不知道哪一步失败了,也不能阅读正确的文档,这是特定于那一步的!)
git fetch
自动更新你的远程跟踪分支,并在开始工作时只制作本地副本。 - torekgit clone --mirror
命令(接近)是我正在寻找的。 - sawa