我的git中添加了许多遥控器。每个远程程序都是一个开发人员的存储库每天我fetch --all
看到他们创建的任何新分支都可以随时查看。
但是,开发人员可以将“私有”分支推送到远程。比如,所有以下划线前缀命名的分支都没有准备好进行审核,而其他分支已准备好进行审核。
在执行git fetch --all
时,我的git图(由/libexec/git-core/git-gui
)将看到所有分支,无论它们是否具有下划线前缀。它使图表变得复杂。
我希望git fetch
忽略那些_XXXX
分支被下载到我的本地git。所以,当我查看git图时,它就像:
RemoteA/Branch1
,RemoteB/Branch1
,RemoteB/Branch2
RemoteA/_Branch2
,RemoteB/_Branch3
我该怎么做?
答案 0 :(得分:5)
而不是使用' _
'命名约定,您可以使用命名空间,在origin/review/Branch1
(git push Branch1:review/Branch1
)中推送分支
(在in that answer中命名为" group" that answer或"层次结构分支名称(带斜杠的分支名称)
这样,你只需要获取"评论'名称空间:
git fetch +refs/heads/review/*:refs/remotes/origin/review/*
唯一的另一个选择是脚本,它将:
git ls-remote origin
答案 1 :(得分:4)
使用特殊的"评论"扩展VonC's answer文件夹 1 ,您可以为同事修改.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
或git fetch fred
将不会更新您指定的模式之外的任何内容。
1 或者您需要的许多特殊或有趣的文件夹/分支。
答案 2 :(得分:2)
您可以使用别名一步完成。将其添加到您的~/.gitconfig
文件中:
[alias]
fall = !sh -c 'git fetch --all && git branch -r | sed /HEAD/d | grep /_ | xargs git branch -dr' --
然后只说git fall
。它将删除包含/_
的所有远程分支。
您可以观察shell命令的别名的复杂性。 : - /
答案 3 :(得分:-1)
您可以使用ignore-refs
选项:
git fetch --ignore-refs branch123