Как я могу сказать Git игнорировать определенные ветки при извлечении/вытягивании?

В настоящее время, когда я тяну, я получаю изменения со всех веток:

$ git pull
remote: ...
Unpacking objects: ...
From ssh://github.com/...
   a69d94d..a2019da  master     -> origin/master
   b684d4a..b8819dc  develop    -> origin/develop
 + 263c644..f1c1894  gh-pages   -> origin/gh-pages  (forced update)
Updating a69d94d..a2019da

Мне нравится такое поведение, но мне не нужно получать контент из ветки gh-pages, так как она содержит только сгенерированный контент. Как настроить Git для получения из всех веток, кроме некоторых (gh-pages). Я также хотел бы никогда не видеть gh-pages в моем списке локальных филиалов.


person Jace Browning    schedule 17.05.2014    source источник
comment
Есть ли ответ в stackoverflow.com/questions/6368987/ помогите? Хотя речь идет только о добыче.   -  person tigeronk2    schedule 17.05.2014
comment
Разве настройка remote.origin.fetch, как я упоминаю в своем ответе, не будет включать только нужную вам ветку, а не gh-branch?   -  person VonC    schedule 11.06.2014
comment
@VonC да, но разве мне не пришлось бы делать это вручную для каждой удаленной ветки?   -  person Jace Browning    schedule 12.06.2014
comment
Идея состоит в том, чтобы сделать это для единственной удаленной ветки, над которой вы хотите работать. Он будет игнорировать все остальные.   -  person VonC    schedule 12.06.2014
comment
@VonC, что мне нравится в моем текущем поведении git pull, так это то, что он автоматически добавляет новые удаленные ветки.   -  person Jace Browning    schedule 12.06.2014
comment
Итак, вам нужны все удаленные ветки, кроме одной или двух?   -  person VonC    schedule 12.06.2014
comment
@VonC Да, я бы хотел иметь все удаленные ветки, кроме gh-pages. Может сценарий нужен...   -  person Jace Browning    schedule 12.06.2014
comment
Конечно. Я бы не знал, как сделать такое исключение выборки с помощью одной команды git.   -  person VonC    schedule 12.06.2014


Ответы (1)


Вы можете изменить свою конфигурацию, чтобы получить только одну ветку:

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

С участием

git config remote.origin.fetch +refs/heads/master:refs/remotes/origin/master

Если у вас более одной ветки, вы можете добавить несколько директив fetch для их получения (кроме gh-pages, которую вы не хотите получать)

См. этот вопрос для примера выборки из нескольких ветвей.

Я понимаю, что это решение плохо масштабируется, но спецификация выборки не поддерживает обычный синтаксис исключения (например, ^<rev>: см. "Указание диапазонов").

Существует способ скрыть определенный refspec, представленный в git 1.8.2: /receive-pack: разрешить скрытие иерархии ссылок", но это на удаленной стороне, а не на стороне клиента.

person VonC    schedule 17.05.2014
comment
Вопрос в том, чтобы пропустить одно и не включить только одно. - person manojlds; 17.05.2014
comment
@manojlds не будет включать одно, пропуская другое? По сути, вам нужно перечислить ветки, которые вы хотите получить. - person VonC; 17.05.2014
comment
@manojlds Этот ответ должен работать, но я подожду, чтобы узнать, есть ли у кого-нибудь еще менее ручное решение. Я часто разветвляюсь. - person Jace Browning; 17.05.2014
comment
Вы можете создать псевдоним, который будет нажимать и добавлять нажатую ветку в вашу конфигурацию выборки. - person kaman; 17.05.2014