Как перечислить все удаленные ветки в Git 1.7+?

Я пробовал git branch -r, но это только списки удаленных ветвей, которые я отслеживал локально. Как найти список тех, что у меня нет? (Мне не важно, перечисляет ли команда все удаленные ветки или только те, которые не отслеживаются.)

Ответ 1

Для подавляющего большинства [1] посетителей здесь правильный и самый простой ответ на вопрос "Как мне перечислить все удаленные ветки в Git 1. 7+?" является:

git branch -r

Для небольшого меньшинства [1]git branch -r не работает. Если git branch -r не работает, попробуйте:

git ls-remote --heads <remote-name>

Если git branch -r не работает, то, возможно, как сказал Каскабель, "вы изменили стандартную refspec, чтобы git fetch и git remote update не извлекали все remote ветки".


[1] На момент написания этой сноски 2018-февраль я посмотрел комментарии и увидел, что git branch -r работает для подавляющего большинства (около 90% или 125 из 140).

Если git branch -r не работает, проверьте, что git config --get remote.origin.fetch содержит подстановочный знак (*) согласно этому ответу

Ответ 2

remote show отображает все ветки на пульте дистанционного управления, в том числе те, которые не отслеживаются локально и даже те, которые еще не были извлечены.

git remote show <remote-name>

Он также пытается показать статус ветвей относительно вашего локального репо:

> git remote show origin
* remote origin
  Fetch URL: C:/git/.\remote_repo.git
  Push  URL: C:/git/.\remote_repo.git
  HEAD branch: master
  Remote branches:
    branch_that_is_not_even_fetched new (next fetch will store in remotes/origin)
    branch_that_is_not_tracked      tracked
    branch_that_is_tracked          tracked
    master                          tracked
  Local branches configured for 'git pull':
    branch_that_is_tracked merges with remote branch_that_is_tracked
    master                 merges with remote master
  Local refs configured for 'git push':
    branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
    master                 pushes to master                 (up to date)

Ответ 3

git branch -a | grep remotes/*

Ответ 4

С помощью git branch -r перечислены все удаленные ветки, а git branch -a перечислены все ветки на локальном и удаленном. Однако эти списки устарели. Чтобы эти списки обновлялись, запустите

git remote update --prune

который обновит ваш локальный список веток всеми новыми из удаленного и удалит все, которых больше нет. Выполнение этой команды обновления без -prune будет получать новые ветки, но не удалять их больше не на пульте дистанционного управления.

Вы можете ускорить это обновление, указав пульт, иначе он вытащит обновления из всех добавленных вами пультов, например

git remote update --prune origin

Ответ 5

Но

git branch -ar

должен это сделать.

Ответ 6

Вы также можете сделать git fetch, а затем git branch -r. Без извлечения вы не увидите самые последние ветки.

Ответ 8

Самый простой способ, который я нашел:

git branch -a

Ответ 9

TL; ТР;

Это решение вашей проблемы:

git remote update --prune    # To update all remotes
git branch -r                # To display remote branches

или

git remote update --prune    # To update all remotes
git branch <TAB>             # To display all branches

Ответ 10

Лучшая команда для запуска - git remote show [remote]. Это покажет все ветки, удаленные и локальные, отслеживаемые и не отслеживаемые.

Вот пример из проекта с открытым исходным кодом:

> git remote show origin
* remote origin
  Fetch URL: https://github.com/OneBusAway/onebusaway-android
  Push  URL: https://github.com/OneBusAway/onebusaway-android
  HEAD branch: master
  Remote branches:
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked
    refs/remotes/origin/branding stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    develop merges with remote develop
    master  merges with remote master
  Local refs configured for 'git push':
    develop pushes to develop (local out of date)
    master  pushes to master  (up to date)

Если мы хотим получить удаленные ветки, мы можем использовать grep. Команда, которую мы хотим использовать, будет следующей:

grep "\w*\s*(new|tracked)" -E

С помощью этой команды:

> git remote show origin | grep "\w*\s*(new|tracked)" -E
    amazon-rc2                   new (next fetch will store in remotes/origin)
    amazon-rc3                   new (next fetch will store in remotes/origin)
    arrivalStyleBDefault         new (next fetch will store in remotes/origin)
    develop                      tracked
    master                       tracked

Вы также можете создать псевдоним для этого:

git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"

Затем вы можете просто запустить git branches.

Ответ 11

С GitBash вы можете использовать:

Git Branch -a

Ответ 12

попробуй это....

git fetch origin
git branch -a

Ответ 13

Убедитесь, что выбранное вами удаленное начало - это действительно репозиторий, который вы хотите, а не старый клон.

Ответ 14

Я закончил работу с конвейером командной оболочки, чтобы получить то, что я хотел, только что объединил ветки с удаленного источника:

git branch -r --all --merged \
    | tail -n +2 \
    | grep -P '^  remotes/origin/(?!HEAD)' \
    | perl -p -e 's/^  remotes\/origin\///g;s/master\n//g'

Ответ 15

Используя эту команду,

git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"


CommitID       : 27385d919 
Remote Branch  : (origin/ALPHA) 
Commit Message :  New branch created

Перечислите все удаленные ветки, в том числе сообщения о коммитах, Id коммитов, на которые ссылаются удаленные ветки.

Ответ 16

Я хотел бы использовать:

git branch -av

Эта команда не только показывает вам список всех веток, включая удаленные ветки, начинающиеся с /remote но также предоставляет вам * обратную связь о том, что вы обновили, и комментарии о последнем коммите.

Ответ 17

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

git remote show origin

Если это все хорошо, возможно, вам следует запустить обновление:

git remote update

Предполагая, что это работает успешно, вы должны быть в состоянии сделать то, что говорят другие ответы:

git branch -r

Ответ 18

Просто запустите команду git fetch. Он вытянет все удаленные ветки в локальный репозиторий, а затем сделает git branch -a, чтобы вывести список всех веток.

Ответ 19

попробуйте

 git branch -at