2015-04-09 4 views
4

Поддержка Я создаю несколько ветвей (aaa, bbb, ccc) из фиксации. Затем я создаю новую ветку (ddd) из одной из ветвей (bbb) и совершает фиксацию на ней.GIT - Как узнать ветку ветви от ветви?

Затем я нажал все на удаленный. Как другой человек знает, что новая ветка (ddd) поступает из какой ветви?

команды Git я сделал:

мерзавец филиал ааа
мерзавец филиал ГЭБ
мерзавец филиал ссс
мерзавец филиал ддд ГЭБ
мерзавец контроль ддд
эхо 2 >> файл
git добавить файл
git commit -m "2"

И журнал мерзавец покажет


* совершить d259a3b (HEAD, ддд)
|
| 2
|

* commit efb038c (разработка, ccc, bbb, aaa)
|
| 1
|

* совершить dd24bb6 (мастер)

Можно даже знать, что ДДД была ответвлением ГЭБ?

С благодарностью

ответ

3

Это вообще невозможно. Git записывает только единственный идентификатор фиксации (SHA-1), на который указывает ссылочное имя (например, ветка или тег). История этого commit определяется исключительно родительскими идентификаторами этого коммита, которые не записывают имена ветвей. Когда вы нажимаете на удаленный компьютер, ваша операция «push» отправляет SHA-1 комманды, которую вы нажимаете (плюс больше SHA-1 для любых других связанных объектов-деревьев и файлов, родительских коммитов и т. Д. Плюс содержимое всех эти объекты по мере необходимости на основе того, что отсутствует на пульте дистанционного управления), и просит пульт установить его ветку, чтобы указать на новый SHA-1.

Другими словами, вы говорите пульту: «здесь, совершите 1234567 и установите метку ветки ddd = 1234567».Он может сказать вам «сделать то, что мне нужно пять других коммитов», один из которых вы обозначили как bbb, но если вы не сообщите удалённому «о, как установили ярлык bbb на эту другую фиксацию», то он выиграл У этой информации нет.


Это немного преувеличения: Git также запись, в reflog, каждый SHA-1, который хранится в метке, в том числе отраслевых этикеток. Таким образом, можно вернуться к истории лейбла, чтобы «выяснить, с чего это началось». Есть два ограничения на это: reflogs являются чисто локальными, никогда не передаются приложением или push; и reflogs истекает, как правило, через 90 дней в этих случаях (хотя это настраивается и возникают дополнительные сложности). Поэтому, пока мы говорим, что есть шаг на шаг или пропустить более 3 месяцев, невозможно сказать.

+0

Это напоминает мне http://stackoverflow.com/a/23149200/6309;) +1 – VonC

+0

@VonC: Я думал об этом (или подобном) и отмечал как дуп, но не совсем обойти его, а также работать над другими вещами в других окнах ... :-) – torek

+0

Мне на самом деле нравятся эти «близкие друг к другу», так как объяснение чего-то снова иногда приносит новые идеи. – VonC

1

Отрасли - это не что иное, как указатели на конкретную фиксацию. Вы можете видеть только, от чего произошла ветвь ddd, а не какая ветка.

1

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

Для кого-то, расположенного вверх по течению, это не относится к тому месту, где произошла ветка, только в том случае, если она содержит определенную фиксацию (или последовательность коммитов). Это определяет, как/если git может быстро пересылать или объединять ветви вместе.

Смежные вопросы