Когда Git обновляет список удаленных веток?

496

Используя git branch --allпоказывает все удаленные и локальные филиалы. Когда Git обновляет этот список?

На тянуть / толкать? И как мне обновить его с помощью Git Bash ?

BendEg
источник
5
Как примечание, git ls-remoteможет быть интересно здесь.
jthill

Ответы:

1221

Чтобы обновить локальный список удаленных филиалов:

git remote update origin --prune

Показать все локальные и удаленные ветви, о которых (локальный) Git знает

git branch -a
centralcmd
источник
143
git remote update origin --pruneэто то, что я искал,
спасибо
6
О разнице между этим ответом, который использует git remote update, и принятым ответом, который использует git fetch, смотрите здесь
The Red Pea
6
Это правильный ответ. git fetchне удалил мой локальный кеш удаленных веток. Только --pruneсмог все это почистить.
Фелипе Альварес
23
Вы можете сделать так, чтобы git автоматически сделал это сgit config remote.origin.prune true
kjhf
8
git remote prune originимеет тот же эффект, и вы печатаете меньше.
Двин
27

Я полагаю, что если вы запустите git branch --allиз Bash, то список удаленных и локальных веток, которые вы увидите, будет отражать то, о чем «знает» ваш локальный Git во время выполнения команды. Поскольку ваш Git всегда актуален в отношении локальных филиалов в вашей системе, список локальных филиалов всегда будет точным.

Однако для удаленных филиалов это не должно иметь место. Ваш локальный Git знает только об удаленных ветвях, которые он видел при последней загрузке (или извлечении). Поэтому возможно, что вы могли бы запустить git branch --allи не увидеть новую удаленную ветку, которая появилась после того, как вы в последний раз загрузили или извлекли.

Чтобы убедиться, что ваш локальный и удаленный список ветвей обновлен, вы можете сделать git fetch перед запуском git branch --all.

Для получения дополнительной информации, «удаленные» ветви, которые появляются при запуске git branch --all, на самом деле совсем не удалены; они на самом деле местные. Например, предположим, что на пульте дистанционного управления есть ветвь, featureкоторую вы хотя бы раз вставили в локальный Git. origin/featureПри запуске вы увидите список как ветку git branch --all. Но эта ветка на самом деле является локальной веткой Git. Когда вы это сделаете git fetch origin, эта ветвь отслеживания будет обновляться с любыми новыми изменениями с пульта. Вот почему ваше местное состояние может устареть, поскольку могут появиться новые удаленные ветви или устаревшие ветви отслеживания.

Тим Бигелейзен
источник
4
Да, git fetchсделал это.
BendEg
14
Примечание для голосующих: если вы считаете, что правильная информация с благими намерениями заслуживает отрицательного ответа, то, по крайней мере, высказайтесь и оставьте комментарий.
Тим Бигелейзен
3
git fetchне работает для меня, нужно добавить --prune. Кстати, я не downvoter;)
Deqing
3
git fetchне удаляет удаленные ветки Вероятно, поэтому некоторые люди и проголосовали против
Жером Мевель
@ JérômeMEVEL Удивительно, что принятый ответ теперь имеет 1000 голосов. Это безумие ... Жаль, что у меня не было такого воздействия :-)
Тим Бигелайзен
24

OP не запрашивал очистки для всех пультов, а для всех веток по умолчанию.

Так git fetch --pruneэто то, что следует использовать.

Настройка git config remote.origin.prune trueпроизводится --pruneавтоматически. В этом случае просто git fetchтакже удалит устаревшие удаленные ветви из локальной копии. Смотрите также Автоматическое удаление с помощью Git fetch или pull .

Обратите внимание, что это не очищает локальные ветви, которые больше не отслеживают удаленную ветку. Для этого смотрите Как удалить локальные ветви отслеживания, которые больше не существуют на удаленном компьютере .

Оливер
источник
Чтобы сделать это немного корочеgit fetch -p
Майкл Уорнер
2

Используйте git fetchдля получения всех последних созданных веток.

VVV
источник
1
git fetchничего не изменилось для меня с git 2.17.1. Какую версию и опции вы использовали?
PointedEars
2
Вам нужно либо --pruneили git config remote.NAME.prune trueдля этого, чтобы решить вопрос ОП
Оливер
-1

Если вы используете Eclipse и хотите видеть новые ветки от апстрима;

В перспективе Git щелкните правой кнопкой мыши Git-репозиторий и выберите «Получить из Upstream». Это приносит новые удаленные ветви.

Selman Gun
источник
-8

Если вы используете Eclipse,

  1. Открыть "Git Repositories"
  2. Найдите свой репозиторий.
  3. Откройте «Филиалы», затем «Удаленное отслеживание».

Гит

Они все должны быть там. Щелкните правой кнопкой мыши и «оформить заказ».

markthegrea
источник
Как это отвечает на вопрос? - "Когда Git обновляет список удаленных веток?"
Питер Мортенсен
Когда я хотел обновить свои местные филиалы в затмении, я погуглил, и это привело меня сюда. Этот пост на самом деле помог нескольким людям, поскольку у него было несколько голосов. Может быть, я неправильно понял вопрос. Для меня Eclipse IS Git (интерфейс к нему). Извините за оскорбление всех!
markthegrea