Answers:
对于此处的绝大多数访问者[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 fetch
和git remote update
不获取所有remote
的分支”。
[1]本脚注2018 - 2月的写作作为,我看了看评论,看到的git branch -r
绝大多数作品(约90%或125出的140)。
如果git branch -r
不起作用,请按照此答案检查是否git config --get remote.origin.fetch
包含通配符(*
)
git ls-remote [url]
这样做,而不必先克隆它:)
git branch -r
由于这是正确和最简单的答案,因此问问者有一个特殊情况,即他修改了自己的行为git branch -r
,大多数来此访问的用户不会有
git branch -r
也没有为我工作。它只是列出已经在本地跟踪的分支。但git ls-remote --heads
列出了远程存储库上可用的所有分支...
git ls-remote
(通过列出,但未在上列出git branch -r
)中git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
进行获取,则必须先执行,然后再执行stackoverflow.com/a/26649770/873282所述。
git fetch --all
获取所有当前的远程分支之前,请不要忘记做。
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)
branch_that_is_not_tracked tracked
?
branch_that_is_not_tracked
是任何本地git分支均未跟踪的分支。但是,它已被提取到本地存储库(因此有一个远程分支)。出于某种奇怪的原因,即使没有跟踪远程的本地分支,也git remote show
将此状态称为tracked
。在这种情况下,与的相反tracked
是new
,表示“未提取”。
git branch -r
建议仍然有一个远程分支,但git remote show origin
显示refs/remotes/origin/my-now-dead-branch stale (use 'git remote prune' to remove)
。有用得多!
git branch -a | grep remotes/*
git branch -r
,OP表示还不够好。
git branch -a
并git branch -r
为我列出所有远程分支,我不确定OP所说的是否正确。我只是建立了一个测试库并进行了验证(只有主跟踪源/主,但仍然看到带有两个标志的所有远程分支)。
git fetch
之后git branch -a
才开始对我失败。也许git的行为被改变了?
使用git branch -r
列出所有远程分支,并git branch -a
列出本地和远程上的所有分支。这些列表已经过时了。要使这些列表保持最新,请运行
git remote update --prune
它将使用来自远程的所有新分支列表来更新本地分支列表,并删除不再存在的所有分支列表。在不使用--prune的情况下运行此更新命令将检索新分支,但不会删除不再在远程上的分支。
您可以通过指定一个遥控器来加快此更新的速度,否则它将从您添加的所有遥控器中获取更新,如下所示
git remote update --prune origin
但
git branch -ar
应该这样做。
-r
返回远程分支。返回本地和远程分支。因此,与两个产生相同的输出。-a
git branch -a
git branch -ar
heads/
中refs/heads/features/my-branch
,谢谢!
我找到的最简单的方法是:
git branch -a
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
最好的命令是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
。
使用Git Bash,您可以使用:
git branch -a
尝试这个...
git fetch origin
git branch -a
使用此命令,
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。
接受的答案对我有用。但是我发现从最近开始对提交进行排序更有用。
git branch -r --sort=-committerdate
git fetch
和git remote update
不获取所有远程的分支?因为否则您可以直接获取然后使用git branch -r
...