GIT - Откуда я ветвился? - PullRequest
       22

GIT - Откуда я ветвился?

40 голосов
/ 28 марта 2012

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

EG Происходит ли "branchA" из "development"?Происходит ли "branchB" от "master" или "branchA" ??

Как я могу ответить на приведенные выше примеры вопросов?

Ответы [ 7 ]

27 голосов
/ 28 марта 2012

git merge-base показывает коммит, который является общим предком двух ветвей.

Простое использование: git merge-base <branch> <branch> показывает общий коммит двух ветвей.

17 голосов
/ 28 марта 2012

На это нет канонического ответа, так как ветви - это просто указатели на определенные коммиты в DAG. Например, master и foo могут указывать на один и тот же коммит; если затем вы создаете ветку из foo, это практически то же самое, что и создание ветки из master.

Тем не менее, если вы визуализируете граф фиксации (с помощью gitk или другого графического инструмента истории), вы можете получить общее представление о том, где точки ветвления находятся в графе фиксации, в отличие от того, куда указывают различные указатели ветвления.

2 голосов
/ 11 июля 2018

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

git merge-base --fork-point master
2 голосов
/ 28 марта 2012

Если вы работаете в Windows или Linux (с графическим интерфейсом), просто установите красивые git-расширения. Они могут прекрасно представить вам ветку / дерево слияний.

http://code.google.com/p/gitextensions/downloads/detail?name=GitExtensions207.zip&can=4&q=

Привет,

1 голос
/ 02 февраля 2017

Придерживайтесь соглашения об именах и избавьте себя от путаницы.

При создании ветви из master - скажем, для реализации функции электронной почты - вы можете назвать ее master_emailfeature.Затем, если вам нужно создать дочернюю ветку из этой ветви, чтобы реализовать ssl для электронной почты, вы можете назвать ее master_emailfeature_sslandtls.

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

1 голос
/ 28 марта 2012

Вы можете использовать графический просмотрщик дерева, я использую gitg для просмотра веток и различий, хотя большую часть времени я использую командную строку для реальной работы.

0 голосов
/ 26 июня 2017

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

git remote show origin

Прокрутите вниз, пока не увидите «Локальные ветви, настроенные для« git pull »:», а под ними отображается список всех ваших локальных ветвей, и каждая удаленная ветвь объединится с.

...