[英]List all branches with `git branch -a` does not show recently fetched branch?
我在控制台中有这段历史:
Resolving deltas: 100% (58156/58156), completed with 1585 local objects.
From bitbucket.org:interos/datavana
* branch datavana.dev.py.3.7.3 -> FETCH_HEAD
$ git checkout datavana.dev.py.3.7.3
error: pathspec 'datavana.dev.py.3.7.3' did not match any file(s) known to git
$ git branch
* alex/dockerize
master
$ git branch -a
* alex/dockerize
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
我在尝试运行时注意到一个问题:
git checkout datavana.dev.py.3.7.3
因为正如您所看到的那样没有用,而且这个分支也没有使用git branch -a
列出,有人知道为什么我不能签出这个分支吗?
如果您查看问题的顶部,则会看到:
* branch datavana.dev.py.3.7.3 -> FETCH_HEAD
这意味着远程引用datavana.dev.py.3.7.3
已本地存储在FETCH_HEAD
。 它没有创建具有相同名称的本地分支。
您可以通过运行以下datavana.dev.py.3.7.3
创建一个名为datavana.dev.py.3.7.3
的本地分支:
git checkout -b datavana.dev.py.3.7.3 FETCH_HEAD
您可能运行了git fetch <remote> datavana.dev.py.3.7.3
,在这种情况下,您看到的是预期的行为。 从git-fetch
手册页:
获取的ref的名称以及它们指向的对象名称将写入.git / FETCH_HEAD。 脚本或其他git命令(例如git-pull(1))可以使用此信息。
通常,您可以使用git checkout
签出远程分支。
为什么它会执行
FETCH_HEAD
操作,以前从未见过?
我刚刚运行了git fetch
然后仔细检查您的git config remote.origin.fetch
设置:
默认的 refspec应该已经在获取时为你创建了本地分支:
+refs/heads/*:refs/remotes/origin/*
但是如果你有一个不同的 refspec,那么远程分支被获取,它的引用存储在 FETCH_HEAD 中
git fetch datavana.dev.py.3.7.3:datavana.dev.py.3.7.3
也会在本地创建分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.