git ahead / behind информация между мастером и филиалом?



Я создал ветку для тестирования в моем локальном РЕПО (test-branch) который я подтолкнул к Github.



если я пойду к своему Github учетная запись и выберите этот test-branch Она показывает информацию:



This branch is 1 commit ahead and 2 commits behind master


мои вопросы:




  1. как я могу отобразить эту информацию локально (т. е.: команда, которая показывает это на терминале, а не открывать Github чтобы увидеть его)?


  2. Я знаю, что вижу различия между ветвями использование:



    git diff master..test-branch


    или через Meld (который я предпочитаю):



    git difftool master..test-branch


    но мне было интересно, есть ли способ увидеть вперед и за совершает отдельно. И. Е.: Есть ли способ показать, что 1 совершить впереди сам по себе, а потом те 2 совершает за сами по себе?



968   4  

4 ответов:

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

git rev-list --left-right --count master...test-branch

, который дает вам выход как

1 7

что означает столько же, сколько: по сравнению с master, test-branch-это 7 коммитов вперед и 1 коммит позади

вы также можете сравнить веток, как origin/master...master, чтобы узнать, сколько нарушает филиал впереди / позади его удаленной ветки

прежде всего, чтобы увидеть, сколько ревизий вы отстаете локально, вы должны сделать git fetch чтобы убедиться, что у вас есть последняя информация от пульта дистанционного управления.

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

$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)

предпочитаю git status -sb:

$ git status -sb
## master...origin/master [ahead 2, behind 1]

на самом деле я псевдоним это просто git s, а это основная команда, которую я использую для проверки состояния.

посмотреть разница в "передних ревизиях"master, Я могу исключить "за изменения" от origin/master:

git diff master..origin/master^

чтобы увидеть разницу в "за поправки" о origin/master, я могу исключить "впереди ревизий" из master:

git diff origin/master..master^^

если есть 5 ревизий впереди или позади, было бы проще написать так:

git diff master..origin/master~5
git diff origin/master..master~5

обновление

чтобы увидеть изменения впереди/позади, ветвь должна быть настроена для отслеживания другая ветвь. Для меня это поведение по умолчанию, когда я клонирую удаленный репозиторий, и после того, как я нажимаю ветку с git push -u remotename branchname. Моя версия 1.8.4.3, но она работает так долго, как я помню.

начиная с версии 1.8 вы можете установить ветке отслеживания такой:

git branch --track test-branch

начиная с версии 1.7, синтаксис был другим:

git branch --set-upstream test-branch

с Git 2.5+, теперь у вас есть еще один вариант, чтобы увидеть вперед/назад для всех ветвей, которые настроены для нажатия на ветку.

git for-each-ref --format="%(push:track)" refs/heads

на " Просмотр Неопущенных Git Коммитов"

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

Это не покажет вам, сколько коммитов он впереди или позади другой ветви, хотя. Ваши варианты-это полный diff, глядя на github, или используя решение, подобное vimhsa, связанное выше:git статус по всем РЕПО

Comments

    Ничего не найдено.