Гитк показать "будущие" ветки? - PullRequest
1 голос
/ 14 декабря 2010

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

Почему?ИМХО, это не логично и бесполезно, потому что нарушает хронологию событий (как thinsg попадает в репозиторий).

Предположим, у меня есть дерево, которое выглядит так:

o ветвь 'Left' (коммит 3)
|o ветвь 'Right' (коммит 2)
| /
o коммит 1
|
o ветвь 'base'

Теперь, если я выберу коммит 1, тогдав разделе «Ветви:» я увижу:
Ветви: левый, правый
Следующие: базовые

Какой смысл в этом?Объект commit 1 является частью базовой ветви, он не является частью левой ветви или правой ветви, просто потому, что на момент его создания Left и Right еще не существовало.Таким образом, все, что объединяется или фиксируется в Левый и Правый ПОЗЖЕ, будет частью левого или правого, а не коммитом 1. Итак, как ветки, которые фиксируют 1, являются частью включения левого и правого?

Кто-нибудь, пожалуйста, объясните, что мне здесь не хватает, потому что, исходя из фона ClearCase, мне это вообще не имеет смысла ...

Спасибо!

Ответы [ 3 ]

1 голос
/ 14 декабря 2010

Благодаря этой информации вы знаете, что изменения, внесенные в выбранный коммит, включены во все отображаемые там ветки.

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

Иногда я хотел бы сделать наоборот, выбрать коммит и посмотреть, применяется ли там другой предыдущий коммит.Насколько я знаю, практического способа сделать это не существует, поэтому выбор другого предыдущего коммита и проверка поля "Ветви" - хорошая замена.

0 голосов
/ 14 декабря 2011

Вы смотрите на это немного неправильно.Commit1 commit не является частью базовой ветви.В git ветки - это простые ссылки для фиксации объектов.Затем история ветви описывается как «все коммиты, достижимые из».Таким образом, commit1 доступен как слева, так и справа, но недоступен из базы.

Если бы вы были git checkout base && git checkout -b feature2, тогда ваша новая ветвь feature2 не будет включать commit1.Git не отслеживает создание веток - если вы хотите записать, что можете добавить тег или использовать git mergebase Left Right, который сообщит вам о первом коммите, достижимом из обеих веток (в данном случае, commit1).

0 голосов
/ 15 декабря 2010

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

В вашем примере commit1 напрямую не связан ни с одной веткой, но предыдущий остается на base, а два восходящих коммита на Left и Right.

...