如何列出Git 1.7+中的所有远程分支?

我已经尝试了git branch -r ,但是只列出了我在本地跟踪的远程分支。 如何找到我还没有的人的名单? (对我而言,命令列出所有远程分支还是仅列出未跟踪的分支都无关紧要。)


#1楼

git branch -ar

应该这样做。


#2楼

remote show显示了远程上的所有分支,包括那些未在本地跟踪的分支,甚至尚未提取的那些。

git remote show <remote-name>

它还尝试显示相对于本地存储库的分支状态:

> git remote show origin
* remote origin
  Fetch URL: C:/git/.\remote_repo.git
  Push  URL: C:/git/.\remote_repo.git
  HEAD branch: master
  Remote branches:
    branch_that_is_not_even_fetched new (next fetch will store in remotes/origin)
    branch_that_is_not_tracked      tracked
    branch_that_is_tracked          tracked
    master                          tracked
  Local branches configured for 'git pull':
    branch_that_is_tracked merges with remote branch_that_is_tracked
    master                 merges with remote master
  Local refs configured for 'git push':
    branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
    master                 pushes to master                 (up to date)

#3楼

您也可以先执行git fetch ,再执行git branch -r 。 没有获取,您将看不到最新的分支。


#4楼

使用git branch -r列出所有远程分支,而git branch -a列出本地和远程的所有分支。 这些列表已经过时了。 要使这些列表保持最新,请运行

git remote update --prune

它将使用来自远程的所有新分支列表来更新本地分支列表,并删除不再存在的所有分支列表。 在不使用--prune的情况下运行此更新命令将检索新分支,但不会删除不再在远程上的分支。

您可以通过指定一个遥控器来加快此更新的速度,否则它将从您添加的所有遥控器中提取更新。

git remote update --prune origin

#5楼

确保您列出的远程源确实是您想要的存储库,而不是较旧的克隆。


#6楼

最好的命令是git remote show [remote] 。 这将显示所有已跟踪和未跟踪的分支机构(远程和本地)。

这是一个来自开源项目的示例:

> git remote show origin
* remote origin
  Fetch URL: https://github.com/OneBusAway/onebusaway-android
  Push  URL: https://github.com/OneBusAway/onebusaway-android
  HEAD branch: master
  Remote branches:
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked
    refs/remotes/origin/branding stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    develop merges with remote develop
    master  merges with remote master
  Local refs configured for 'git push':
    develop pushes to develop (local out of date)
    master  pushes to master  (up to date)

如果我们只想获取远程分支,可以使用grep 。 我们要使用的命令是:

grep "\w*\s*(new|tracked)" -E

使用此命令:

> git remote show origin | grep "\w*\s*(new|tracked)" -E
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked

您还可以为此创建一个别名:

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"

然后,您可以运行git branches


#7楼

我最终做了一个混乱的shell管道来获得想要的东西。 我只是从原始远程合并分支:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'

#8楼

尝试:

 git branch -at

ََََََََََََََََََََََََََََََ


#9楼

git branch -a | grep remotes/*

#10楼

对于此处的绝大多数访问者[1]正确和最简单的回答是 “如何在Git 1.7+中列出所有远程分支?”的问题。 是:

git branch -r

对于少数[1],git branch -r不起作用。 如果git branch -r不起作用,请尝试:

git ls-remote --heads <remote-name>

如果git branch -r不起作用,则可能如Cascabel所说: “您已经修改了默认的 refspec ,因此git fetchgit remote update不会获取所有remote的分支”


[1]在撰写本脚注2018-Feb时,我查看了评论,发现git branch -r适用于绝大多数(大约140的 90%或125 )。

如果git branch -r不起作用,请按照此答案检查git config --get remote.origin.fetch包含通配符( *


#11楼

Git分支-远程分支

git ls-remote

Git文档


#12楼

我找到的最简单的方法是:

git branch -a

#13楼

TL; TR;

这是您的问题的解决方案:

git remote update --prune    # To update all remotes
git branch -r                # To display remote branches

要么:

git remote update --prune    # To update all remotes
git branch <TAB>             # To display all branches

#14楼

使用Git Bash ,您可以使用:

git branch -a

#15楼

使用此命令,

git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"

CommitID       : 27385d919
Remote Branch  : (origin/ALPHA)
Commit Message :  New branch created

它列出了所有远程分支,包括远程分支引用的提交消息和提交ID。


#16楼

尝试这个...

git fetch origin
git branch -a

#17楼

我会用:

git branch -av

该命令不仅向您显示所有分支的列表,包括以/remote开头的远程分支,还向您提供有关更新内容和最后提交注释的*反馈。


#18楼

如果您知道应该列出一个远程分支,但没有列出该分支,则您可能要使用以下命令验证您的来源设置正确:

git remote show origin

如果这一切都很好,也许您应该运行一个更新:

git remote update

假设运行成功,您应该能够执行其他回答:

git branch -r

#19楼

只需运行git fetch命令。 它将所有远程分支拉到本地存储库,然后执行git branch -a列出所有分支。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值