如何隐藏“pr”远程分支?

时间:2014-09-12 21:07:24

标签: git github branch

我安装了用于Windows的 GitHub 。当我运行“git branch -a”时,它会显示许多远程跟踪分支,它们似乎是拉取请求。

对Windows使用 Git 的一位同事看不到这一点,但另一位同时使用 GitHub 的同事看到了相同的结果。

示例:我分叉了“bootstrap-sass”。在github.com上,我使用了“Clone in desktop”按钮。它打开GitHub for Windows,并将新的repo添加到我的本地回购列表中。

运行“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配置,还是“Clone in desktop”命令的一部分?

3 个答案:

答案 0 :(得分:1)

克隆存储库时,如果安装了GitHub for Windows,请不要使用“在桌面克隆”选项。而是复制克隆URL并通过命令行运行git clone <url>

当你通过GitHub for 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

答案 1 :(得分: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”中所述,您还可以配置多次提取,以便仅显示您想要查看的远程跟踪分支。

答案 2 :(得分:0)

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

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

替换&#39; *&#39;具有特定分支名称

[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 - 这会删除远程分支