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

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

например. Получается ли "branchA" от "развиваться"? "BranchB" происходит от "master" или "branchA"?

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

Ответ 1

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

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

Ответ 2

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

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

Ответ 4

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

git merge-base --fork-point master

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

git remote show origin

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