2014-10-29 3 views
6

У меня есть много пультов, добавленных в мой git. Каждый пульт - это хранилище для одного разработчика. Каждый день я fetch --all, чтобы увидеть любые новые филиалы, которые они создают, которые готовы рассмотреть.Как игнорировать некоторые ветви/теги, скопированные в локальный git, когда 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

Как я могу это сделать?

ответ

5

Вместо того, чтобы использовать «_» именование, вы могли бы использовать пространство имена, толкая филиал в origin/review/Branch1 (git push Branch1:review/Branch1)
(под название «группа» in that answer или «иерархическое название филиала (название филиалов с косой чертой) в that answer)

Таким образом, у вас есть только принести то, что в «обзоре» пространства имен:

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

единственный оп Тион будет сценарий, который бы:

+0

но как это сделать для всех пульта дистанционного управления? git fetch + refs/heads/review/*: refs/remotes/origin/review/* означает, что я должен ввести RemoteA в команду, чтобы заменить «origin». Что-нибудь подобное, но работает на все? –

+0

@palazzotrain вам нужно зациклиться на всем своем пульте дистанционного управления (в списке «git remote»): легко записывается в сценарий. – VonC

2

Вы можете сделать это в одном шаг с псевдонимом. Добавьте к этому файлу ~/.gitconfig:

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

А потом просто сказать git fall. Он удалит все удаленные ветви, содержащие /_.

Вы можете наблюдать тонкости псевдонимов, которые являются командами оболочки. : -/

+0

Это похоже на другой хороший вариант. +1 – VonC

-1

Вы можете использовать ignore-refs вариант:

git fetch --ignore-refs branch123 
+0

Я использую git 2.8.4, выпущенный после этого сообщения, но у меня нет опции 'ignore-refs'. Я сделал некоторый Googling, и единственные ссылки, которые у меня есть, - это 'git svn'.] (Http://git.661346.n2.nabble.com/PATCH-git-svn-Allow-certain-refs-to -be-ignored-td6867817.html) – Michael

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

 Смежные вопросы

  • Нет связанных вопросов^_^