Подтвердить что ты не робот

Как я могу определить, на какой удаленной "родительской" ветке находится моя ветка?

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

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

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

4b9b3361

Ответ 1

попробуйте следующее:

git log --graph --decorate

Ответ 2

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

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

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

Ответ 3

git branch -vv будет:

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

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

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

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

Из Git отраслевая документация:

-v

-vv

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

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

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

Ответ 4

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

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