Как я могу сказать, на какой удаленной "родительской" ветке основана моя ветка? - PullRequest
31 голосов
/ 23 июня 2011

У меня есть сценарий, в котором есть несколько удаленных веток отслеживания в моем локальном репозитории, с которыми я должен синхронизироваться. Наша модель рабочего процесса:

  • создать ветку локально, исходя из желаемой удаленной ветви отслеживания
  • внести наши изменения
  • сборка / тест / исправление
  • 1010 * совершить *
  • вернуться на удаленный сервер

Я заметил, что «git status» не показывает мне, на какой ветке основана моя локальная ветвь, если что-то не изменилось; то есть незафиксированные локальные изменения или недавняя выборка ставят мою локальную ветвь позади. Есть ли какой-нибудь способ узнать, на какой ветви основан мой локальный филиал, без необходимости что-либо менять? Что-то вроде «git status -showparentbranch» или другой командой, которая показала бы это. Иногда я сталкиваюсь с этой потребностью, но пока не знаю, как ее удовлетворить.

Ответы [ 4 ]

39 голосов
/ 15 октября 2015

попробуйте это:

git log --graph --decorate
17 голосов
/ 23 июня 2011

Git не отслеживает, через какие ветки был сделан коммит.Там нет никакого способа, чтобы сказать.Если коммиты произошли в вашем репо, то вы можете проверить рефлог, но это все.Взгляните на объяснение DAG в книге Pro Git - также читайте там ссылки на журнал.

Вы также можете лучше визуализировать историю с помощью gitk --all или git log --graph --decorate

Надеюсь, это поможет.

11 голосов
/ 25 октября 2013

git branch -vv будет:

  • список все ваши местные филиалы
  • отображать имя удаленной ветви рядом с каждой локальной веткой
  • выделение активной локальной ветки

... из этого вы сможете определить удаленную ветвь текущей активной ветки и многое другое.

Если у вас много местных отделений, список может быть очень длинным. Используйте git branch -vv | grep SOMEWORD, чтобы ограничить вывод только ветвями, содержащими SOMEWORD. Если вы можете придумать слово, уникальное для вашей ветви, вы получите лучший фильтр (только один результат).

Вы также получите некоторые дополнительные данные в выводе, а именно номер (SHA1) и сообщение о последнем коммите. Фильтр grep будет применяться к ним. Я не мог найти способ исключить это.

Из документации по ветке Git :

-v

-vv

- многословный

В режиме списка покажите sha1 и зафиксируйте строку темы для каждой главы вместе с отношением к восходящей ветви (если есть). Если задано дважды, выведите также имя вышестоящей ветви (см. Также git remote show).

(Исходя из вашего комментария, да, похоже, что «правильный» вопрос будет касаться «удаленной» ветви, а не «родительской» ветви. Но это я тоже искал! :))

2 голосов
/ 10 августа 2017

Вы также можете попробовать:

git rev-parse --abbrev-ref --symbolic-full-name @{u}

И используя этот псевдоним в файле .gitconfig:

[alias]
    showparentbranch = rev-parse --abbrev-ref --symbolic-full-name @{u}

Затем вы можете просто позвонить:

git showparentbranch

Протестировано на git версии 2.10.2.windows.1

...