2014-10-29 22 views
6

我有很多遥控器添加到我的git。每个远程是一个开发人员的存储库。每天我fetch --all看到他们创建的任何新的分支已准备好审查。如何忽略一些分支/标签被复制到本地git时做git fetch --all

但是,开发人员可以将“私人”分支推送到远程。假设所有以下划线前缀命名的分支都不准备查看,而其他分支已准备好查看。

在做git fetch --all时,我的git图形(通过/libexec/git-core/git-gui)将看到所有分支,而不管它们是否具有下划线前缀。这使图形复杂化。

我想git fetch忽略那些_XXXX分支从被下载到我的本地git。所以,当我查看git的图形是这样的:

  • 显示分支:RemoteA/Branch1RemoteB/Branch1RemoteB/Branch2
  • 忽略分支:RemoteA/_Branch2RemoteB/_Branch3

我怎样才能做到这一点?

回答

5

而不是使用“_”命名约定,你可以使用命名空间,推动分公司origin/review/Branch1git push Branch1:review/Branch1
(在that answer“第一组” in that answer,或“分层分支名称(分公司名称以斜杠))

这样的话,你只需要取的是,在“审核”命名空间:

git fetch +refs/heads/review/*:refs/remotes/origin/review/* 

其他唯一的运重刑将是一个脚本,它会:

+0

但如何去做所有的远程? git fetch + refs/heads/review/*:refs/remotes/origin/review/*意味着我必须在命令中输入RemoteA以取代'origin'。任何类似的东西,但为所有工作? – 2014-10-29 06:57:42

+0

@palazzotrain你需要遍历所有的远程(通过'git remote'列出):轻松编写脚本。 – VonC 2014-10-29 07:02:51

2

你能做到这一点的一个一步一个别名。添加到您的~/.gitconfig文件:

[alias] 
    fall = !sh -c 'git fetch --all && git branch -r | sed /HEAD/d | grep /_ | xargs git branch -dr' -- 

然后只是说git fall。它将删除包含/_的所有远程分支。

您可以观察到shell命令的别名错综复杂。 : -/

+0

这似乎是另一个不错的选择。 +1 – VonC 2014-10-29 07:48:50

-1

您可以使用ignore-refs选项:

git fetch --ignore-refs branch123 
+0

我使用的是这篇文章后发布的git 2.8.4,但是我没有'ignore-refs'选项。我做了一些谷歌搜索,我唯一的参考[是'git svn'。](http://git.661346.n2.nabble.com/PATCH-git-svn-Allow-certain-refs-to -be-ignored-td6867817.html) – Michael 2016-06-09 21:45:45

3

扩展在VonC's answer有一个特殊的 “审核” 文件夹,你可以修改你.git/config的遥控器的你的同事条目“。这里是the relevant documentation.

在那些曾经

[remote "fred"] 
    url = something.git 
    fetch = +refs/heads/*:refs/remotes/fred/* 

你可以把它改成

[remote "fred"] 
    url = something.git 
    fetch = +refs/heads/review/*:refs/remotes/fred/review/* 
    fetch = +refs/heads/other_pattern/*:refs/remotes/fred/other_pattern/* 
    fetch = +refs/heads/specific_branch:refs/remotes/fred/specific_branch 

这样做之后,您可能需要清理引用裁判你已经进账,但未来git fetch --all s或git fetch fred s将不会更新您指定模式之外的任何内容。


或多达特殊的或有趣的文件夹/枝,因为你需要。

+0

有趣的补充我的答案。 +1 – VonC 2016-05-11 16:09:33