Я создал ветку для тестирования в моем локальном репо (test-branch
), в которую я нажал Github
.
Если я захожу в свой Github
аккаунт и выбираю это, test-branch
он показывает информацию:
This branch is 1 commit ahead and 2 commits behind master
Мои вопросы:
- Как я могу отобразить эту информацию локально (то есть: команда, которая показывает это на терминале, а не открывать
Github
чтобы увидеть ее)? Я знаю, что могу видеть различия между ветками, используя:
git diff master..test-branch
или используя
Meld
(что я предпочитаю):git difftool master..test-branch
но мне было интересно, есть ли способ увидеть коммиты впереди и сзади отдельно. IE: есть ли способ показать, что 1 совершает коммит вперед сам по себе, а затем эти 2 фиксируют сами?
git for-each-ref --format="%(push:track)" refs/heads
. Смотрите мой ответ нижеОтветы:
Вот трюк, который я нашел, чтобы сравнить две ветви и показать, сколько коммитов каждая ветвь опережает другую (более общий ответ на ваш вопрос 1):
Для местных филиалов:
git rev-list --left-right --count master...test-branch
Для удаленных филиалов:
git rev-list --left-right --count origin/master...origin/test-branch
Это дает вывод, как показано ниже:
1 7
Это средство вывода: « По сравнению с
master
,test-branch
7 фиксаций вперед и 1 совершить позади.»Вы также можете сравнить локальные ветви с удаленными ветвями, например,
origin/master...master
чтобы узнать, сколько коммитов локальнаяmaster
ветвь находится впереди / позади своей удаленной коллеги.источник
git rev-list --left-right --count origin/master...@
) - если пользователь делает этоgit fetch
раньше; Полезно для предотвращения запросов на извлечение из устаревших веток.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
или--right-only
Прежде всего, чтобы увидеть, сколько ревизий у вас локально, вы должны сделать,
git fetch
чтобы убедиться, что у вас есть последняя информация с вашего пульта.Вывод по умолчанию
git status
говорит вам, сколько ревизий у вас впереди или позади, но обычно я нахожу это слишком многословным:Я предпочитаю
git status -sb
:На самом деле я называю это просто
git s
, и это основная команда, которую я использую для проверки статуса.Чтобы увидеть разницу в «будущих ревизиях»
master
, я могу исключить «последующие ревизии» изorigin/master
:Чтобы увидеть разницу в «ревизиях»
origin/master
, я могу исключить «ревизии впереди» изmaster
:Если впереди или позади 5 ревизий, было бы проще написать так:
ОБНОВИТЬ
Чтобы увидеть ревизии впереди / позади, ветвь должна быть настроена для отслеживания другой ветки. Для меня это поведение по умолчанию, когда я клонирую удаленный репозиторий и после того, как я нажимаю ветку с помощью
git push -u remotename branchname
. Моя версия 1.8.4.3, но она работает так долго, насколько я помню.Начиная с версии 1.8, вы можете установить ветку трекинга следующим образом:
Начиная с версии 1.7 синтаксис был другим:
источник
git
вы используете? Я не могу воспроизвести то, что вы получаетеgit status
ни с, ни сgit status -sb
. Если я попробую любую из команд (после выполненияgit fetch
), я не получу никакой информации о коммитах впереди / позади.master
иorigin/master
я хочу , чтобы увидеть эти различия дляmaster
и а другой ветвиtest-branch
. Не могли бы вы переформатировать свой ответ на этот вопрос?С Git 2.5+ теперь у вас есть еще одна возможность видеть впереди и сзади всех веток, которые настроены для перехода на ветку.
Смотрите больше на " Просмотр Unpressed Git Commits "
источник
refs/heads
с названием текущей ветви ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
Вы также можете использовать его,
awk
чтобы сделать его немного красивее:Вы даже можете создать псевдоним, который всегда сначала выбирает источник, а затем сравнивает ветви.
источник
После выполнения git fetch вы можете запустить git status, чтобы показать, сколько коммитов локальная ветвь находится впереди или позади удаленной версии ветки.
Это не покажет вам, сколько коммитов находится впереди или позади другой ветви. Вы можете выбрать полный анализ, посмотреть github или использовать решение, подобное Vimhsa, которое описано выше: Статус Git для всех репозиториев.
источник