2014-09-12 56 views
3

我有GitHub已安装Windows。当我运行“git branch -a”时,它显示了许多远程跟踪分支,并且它们看起来是拉取请求。如何隐藏“pr”远程分支?

一个同事谁使用混帐 for Windows不看到这一点,但其他同事谁也使用GitHub的为Windows能够看到同样的结果。

例如:我分叉了“bootstrap-sass”。在github.com上,我使用了“桌面克隆”按钮。它为Windows打开GitHub,并将新的回购添加到本地回购列表中。

运行“git branch -a”,它返回超过100个结果,其中大部分是“/ pr /#”。下面是一个小样本:

C:\gh-ui\bootstrap-sass [master]> git branch -a 
    bower 
* master 
    remotes/kenshub/2.0-stable 
    remotes/kenshub/2.1-stable 
    remotes/kenshub/HEAD -> kenshub/master 
    remotes/kenshub/gh-pages 
    remotes/kenshub/master 
    remotes/kenshub/next 
    remotes/origin/bower 
    remotes/origin/master 
    remotes/origin/pr/3 
    remotes/origin/pr/4 
    remotes/twbs/2.0-stable 
    remotes/twbs/2.1-stable 
    remotes/twbs/gh-pages 
    remotes/twbs/master 
    remotes/twbs/next 
    remotes/twbs/pr/1 
    remotes/twbs/pr/10 
    remotes/twbs/pr/103 

我猜它是Windows的GitHub。我如何隐藏“pr”远程分支?它是git配置,还是“桌面克隆”命令的一部分?

+0

如果我使用“混帐克隆”通过命令行,我没有得到额外的“/ PR /”远程跟踪分支。如果我使用“克隆在桌面”,GitHub for Windows正在做一些额外的事情,并且我最终得到了一堆“/ pr /”远程跟踪分支。 GitHub for Windows在做什么,还有什么不同于普通的“git clone”?看到这个2.5分钟的视频截图: http://screencast.com/t/oSS43ednMHyZ – yazzer 2014-09-16 16:58:52

+0

我从来没有这个问题,直到最近更新到GitHub for Windows。很烦人。 – KingCronus 2015-03-25 12:20:09

回答

0

你不能隐藏,你可以删除那些远程跟踪分支。
继 “Can you delete multiple branches in one command with Git?”,你可以尝试类似的东西:

git branch -D `git for-each-ref --format="%(refname:short)" refs/remotes/*/pr/*` 

(或者你可以使用other expressions with awk and xargs

这类似于deleting one remote tracking branch

但明白这是一个临时解决方案:如果配置为默认fetch = +refs/heads/*:refs/remotes/origin/*,则下次获取将带回全部远程分支。
如“Git Internals - The Refspec”中所述,您还可以配置多个提取以便仅引入您想要查看的远程跟踪分支。

+0

感谢您的回答。我无法获得删除多个分支的不同选项。我确实了解了获取引用配置。我会用更详细地显示问题的视频为我的问题添加评论。 – yazzer 2014-09-16 16:52:57

+0

@yazzer很好的反馈。 +1 – VonC 2014-09-16 17:25:59

1

克隆回购时,如果您安装了用于Windows的GitHub,请勿使用“桌面克隆”选项。相反,请复制克隆URL并通过命令行运行git clone <url>

当您通过GitHub上的Windows克隆,它正在运行额外的命令,如:

fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* +refs/heads/*:refs/remotes/origin/* --prune 
status --untracked-files=all --porcelain -z 

如果您不想再克隆的回购,再参考其他回答关于删除分支机构,确保你没有获取refs congif来获得“/ pr /”分支。查看您的.git/config文件,或运行git config --list --local

+0

要查看GitHub for Windows正在运行的命令,请查看调试日志。点击齿轮,“关于 - >打开调试日志” – yazzer 2014-09-16 17:24:43

0

也可以手动编辑.git/config文件,但不要跟踪所有上游分支,而是跟踪所有上游分支。

[remote "upstream"] 
    url = https://github.com/xyz/xyz.git 
    fetch = +refs/heads/*:refs/remotes/upstream/* 

与特定分支名称替换 '*'

[remote "upstream"] 
    url = https://github.com/rsocket/rsocket-java.git 
    fetch = +refs/heads/1.0.x:refs/remotes/upstream/1.0.x 

然后,你需要通过一个

git branch -d -r upstream/0.2.x 

Deleting the references删除远程跟踪分支中的一个 - 这不删除远程分支机构,它只是从本地删除。

Batch pruning - 这将删除远程支数