Git предупреждает, что вы можете потерять историю, удалив эту ветку. Даже при том, что это фактически не удаляло бы любые коммиты сразу, некоторые или все коммиты в ветке стали бы недоступными, если они также не являются частью какой-либо другой ветки.
Для того, чтобы ветвь experiment
была «полностью объединена» с другой ветвью, ее коммит должен быть предком кончика другой ветки, что делает коммиты в experiment
подмножеством другой ветки. Это позволяет безопасно удалить experiment
, поскольку все его коммиты останутся частью истории репозитория через другую ветку. Он должен быть «полностью» объединен, потому что он мог быть объединен уже несколько раз, но теперь после последнего слияния были добавлены коммиты, которые не содержатся в другой ветви.
Git, однако, не проверяет каждую другую ветку в хранилище; всего два:
- Текущая ветка (HEAD)
- Восходящая ветвь, если она есть
«Восходящая ветвь» для experiment
, как в вашем случае, вероятно, origin/experiment
. Если experiment
полностью объединен с текущей веткой, то Git удаляет его без жалоб. Если это не так, но он полностью объединен с вышестоящей веткой, то Git выдает предупреждение, похожее на:
warning: deleting branch 'experiment' that has been merged
to 'refs/remotes/origin/experiment', but not yet merged to
HEAD.
Deleted branch experiment (was xxxxxxxx).
Где xxxxxxxx
обозначает идентификатор коммита. Полное слияние с вышестоящим потоком означает, что коммиты в experiment
были перенесены в исходный репозиторий, так что даже если вы потеряете их здесь, они, по крайней мере, могут быть сохранены в другом месте.
Так как Git не проверяет другие ветви, может быть безопасно удалить ветку, потому что вы знаете, что она полностью объединена с другой; вы можете сделать это с помощью опции -D
, как указано, или сначала переключиться на эту ветку и позволить Git подтвердить полностью объединенный статус для вас.