怎样才可以得到一些远程起源的分支的所有名称?
我从开始--remote --list
选项,但有多余的origin/HEAD -> origin/master
消息,并从另一个起源的分支。
$> git branch --remote --list
origin/HEAD -> origin/master
origin1/develop
origin1/feature/1
origin1/feature/2
origin1/feature/3
origin1/master
origin2/develop
origin2/feature/1
origin2/feature/2
origin2/master
具体来源的分支可以与匹配<pattern>
的选择,但冗余消息依然存在。 其实这种模式是不是真的正确,因为一些产地的名称可能是其他产地名称的子串,甚至一些分支。
$> git branch --remote --list origin1*
origin1/HEAD -> origin/master
origin1/develop
origin1/feature/1
origin1/feature/2
origin1/feature/3
origin1/master
什么是我寻找的是分支的名单origin1
,其中任何一个我可以用git checkout
命令。 类似的东西:
develop
feature/1
feature/2
feature/3
master
重要的是,它不应该做grep
, sed
, tail
甚至ghc -e
包装,只有真正的git
力量,因为他们unsafeness和变异。
重要的是,它不应该做grep
, sed
, tail
甚至ghc -e
包装,只有真正的git的力量,因为他们unsafeness和变异。
这仅适用于混帐瓷命令真(参见“ 什么是瓷器一词在Git中是什么意思? ”)
使用管道命令LS-远程 ,然后你就可以过滤它的输出。
LS-远程无参数仍然会列出远程端:
git@vonc-VirtualBox:~/ce/ce6/.git$ git ls-remote origin
8598d26b4a4bbe416f46087815734d49ba428523 HEAD
8598d26b4a4bbe416f46087815734d49ba428523 refs/heads/master
38325f657380ddef07fa32063c44d7d6c601c012 refs/heads/test_trap
但是如果你只问说,远程的负责人:
git@vonc-VirtualBox:~/ce/ce6/.git$ git ls-remote --heads origin
8598d26b4a4bbe416f46087815734d49ba428523 refs/heads/master
38325f657380ddef07fa32063c44d7d6c601c012 refs/heads/test_trap
最终的答案:
git@vonc-VirtualBox:~/ce/ce6/.git$ git ls-remote --heads origin | sed 's?.*refs/heads/??'
master
test_trap
(是,它使用sed
,但一个管道命令的输出应该是足够稳定以被解析)
的另一种方法,一些研究了同样的问题后,是:
git for-each-ref --format='%(refname:strip=2)' refs/remotes/<remote_name>
这将在点你上次读取给当地的裁判为命名远程的排序列表。
您可以调整该为他们的标签等。
现有的答案都使用一些明确的问题(SED)不是想要的,是一个远程命令。
我发现这一点,避免了这两个问题,只使用本地的git命令和管道:
git rev-parse --remotes=origin | git name-rev --name-only --stdin
更新 :不是最佳下去,但保持它,如果有人知道如何改进它。 它列出了完整的远程包括,如果你没有本地分公司/遥控器/产地前缀,但只有当你有本地名称。 此外,它似乎跳过一些裁判如果有多个指向同一个SHA1。