Хорошо вырезать ветку git из скоро удаляемой ветви? - PullRequest
3 голосов
/ 13 февраля 2020

Есть ли какие-либо предполагаемые проблемы при вырезании ветви (B) из другой ветви (A), которая будет объединена и удалена? То есть A будет объединено с мастером и удалено до слияния и удаления B. Нужно ли хранить ветку A до тех пор, пока не закончится B, или ее безопасно удалить?

master ----------------------------
             |
             |
             A---------------------
                    |
                    |
                    B--------------

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020

В git теги и ветви являются ссылками, которые позволяют вам получить элемент в ориентированном графе. Единственные доступные пути к корням графа - это те, которые заканчиваются ветвями или тегами. Без ветки или тэга (или ссылки, которая ни того, ни другого, как отдельная HEAD) у вас ничего нет.

Тот факт, что есть даже ветвь A, в основном не имеет значения с точки зрения ветви B: это имеет значение только для отслеживания слияний, и ни в коем случае отсутствие ветви А не потеряло бы ничего, кроме такой информации. Поскольку ветвь А будет объединена и закрыта (удалена), любая необходимая информация об отслеживании уже применяется к master в момент объединения. Если вы объедините B, это произойдет позже, и B уже переносит путь от себя через фрагмент ветви A к корням графа (их может быть много!).

Если ветвь A был удален без слияния, ветвь B выглядела бы как прямая линия к мастеру: она включала в себя коммиты из ветки A на пути от B к последнему общему коммиту предка на главной ветке.

Что Дело в том, что у вас есть некоторый дескриптор для ветви B, и вы делаете: сама ветвь является дескриптором. Вы также можете иметь тег (теги и ветви идентичны во всех отношениях, кроме их интерпретации во время слияний и разрешения конфликтов). Или отдельная ГОЛОВА. Или живите на краю и сохраняйте единственную действующую ссылку в корзине (то есть головку без ссылок, которая хранится до истечения срока ее действия и сбора мусора).

2 голосов
/ 13 февраля 2020

Нет, в этом нет абсолютно никаких проблем. Помните, что коммит, из которого разветвляется B, не будет go нигде при слиянии А с мастером:

master ------*--*-------*------*------*------*
             |                       /^
             |                      / |____Merged A to master
             -------*-------*------/
                    |
                    |
                    B----------*---------*

И даже если вы сделаете слияние в сква sh, это не принесет никакого вреда. , Когда вы в конечном итоге объедините B с мастером, релевантными будут только те изменения, которые B сравнил с мастером, точка, из которой произошел B, не имеет значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...