2016-08-07 2 views
2

Возможно, это противоречит философии дизайна git, но:Есть ли способ git игнорировать целые ветки?

В моей организации я постоянно спускаю тысячи ветвей разработчика, например, например. Dev/<login>/<something...>

Я бы предпочел git, по умолчанию, не снести эти ветви. И тогда, если окажется, что мне нужно сотрудничать в определенной ветви, я просто просто ее вытащил.

Возможно ли это? (Не мой скудный исследование указывает на отсутствие)

Благодаря

+1

'.gitignore' было бы неправильным местом для этого. Вам нужно будет настроить спецификации 'fetch' в вашем' .git/config' для соответствующих пультов. Попытайтесь поиграть с некоторыми подстановочными знаками. Извините, я недостаточно осведомлен, чтобы помочь вам в дальнейшем, но хотел бы увидеть рабочее решение. :-) –

+0

Возможный дубликат [Can git постоянно игнорировать удаленную ветку?] (Http://stackoverflow.com/questions/16842426/can-git-permanently-ignore-a-remote-branch) –

ответ

3

git-pull использует git-fetch.

См. https://git-scm.com/docs/git-fetch для его документации, особенно раздел «Настройка ветвей удаленного отслеживания» (прилагается дословно ниже).

Глядя на это, вы можете использовать только белые списки, не исключая некоторых. Что вы могли бы сделать, поэтому один из:

  • вручную список филиалов, которые вы хотите, чтобы вытащить из вместо шаблона
  • Получить все, чтобы использовать префикс для всех ветвей, так что вы можете различать Dev/* и Foo/*

выборки мерзавец позволяет настроить удаленный. < репозиторий >. Измените конфигурационные переменные.

Обычно такая переменная может выглядеть следующим образом:

[remote "origin"] 
    fetch = +refs/heads/*:refs/remotes/origin/* 

Эта конфигурация используется двумя способами:

Когда мерзавец выборка выполняется без указания того, что ветви и/или метки, чтобы принести по команде линии, например git fetch origin или git fetch, remote. <repository>. Исходные значения используются как refspecs- они указывают, какие ссылки на fetch и какие локальные ссылки обновлять. В приведенном выше примере будут отобраны все ветви, которые существуют в начале координат (например, любой ref, который соответствует левой части значения, refs/heads/) и обновляет соответствующие ветви удаленного отслеживания в refs/remotes/origin/ иерархия.

+1

О, спасибо, @torek! –

3

Вы всегда можете просто получить текущую ветку, над которой работаете, и только эту ветку.

Я бы предпочел иметь мерзавца, по умолчанию, не тянуть вниз эти ветви

# pull only the current branch you are working on 
# git pull = git fetch && git merge 
git pull origin <branch name> 

Теперь, когда вам нужно объединить вашу ветку, вы всегда можете использовать этот синтаксис тянуть/объединить его :

# grab the remote branch 
git pull origin Dev/<branch name> 

Другой способ "играть" с refspec, но им не г рекомендуя делать это даже из-за того, что это довольно просто.

Вот пример формирования документации:

... Тем не менее, вы можете использовать пространство имена (или каталоги), чтобы сделать что-то вроде этого.

Если у вас есть QA команда, которая выталкивает ряд отраслей,
и вы хотите, чтобы получить главный филиал и любой из филиалов QA команды, но больше ничего, вы можете использовать раздел конфигурации, как это:

[remote "origin"] 
    url = https://github.com/schacon/simplegit-progit 
    fetch = +refs/heads/master:refs/remotes/origin/master 
    fetch = +refs/heads/qa/*:refs/remotes/origin/qa/* 
Смежные вопросы