Git ostrzega, że możesz utracić historię, usuwając tę gałąź. Mimo że tak naprawdę nie usuwałby od razu żadnych zatwierdzeń, niektóre lub wszystkie zatwierdzenia w oddziale stałyby się nieosiągalne, gdyby nie były również częścią innego oddziału.
Aby gałąź experiment
została „w pełni scalona” z inną gałęzią, zatwierdzanie jej końcówki musi być przodkiem końcówki drugiej gałęzi, co powoduje, że zatwierdzenia experiment
są podzbiorem drugiej gałęzi. Dzięki temu można go bezpiecznie usunąć experiment
, ponieważ wszystkie jego zatwierdzenia pozostaną częścią historii repozytorium za pośrednictwem drugiego oddziału. Musi być „całkowicie” scalony, ponieważ mógł być już kilkakrotnie scalony, ale teraz dodano zatwierdzenia od ostatniego scalenia, które nie są zawarte w drugiej gałęzi.
Git nie sprawdza jednak co drugiej gałęzi w repozytorium; tylko dwa:
- Obecny oddział (HEAD)
- Gałąź powyżej, jeśli taka istnieje
Prawdopodobnie „odgałęzienie” dla experiment
, jak w twoim przypadku, jest origin/experiment
. Jeśli experiment
jest w pełni scalony w bieżącym oddziale, to Git usuwa go bez reklamacji. Jeśli nie jest, ale jest w pełni scalony w swoim odgałęzieniu, Git kontynuuje z ostrzeżeniem wyglądającym jak:
warning: deleting branch 'experiment' that has been merged
to 'refs/remotes/origin/experiment', but not yet merged to
HEAD.
Deleted branch experiment (was xxxxxxxx).
Gdzie xxxxxxxx
wskazuje identyfikator zatwierdzenia. Bycie w pełni zintegrowanym w jego górnej części oznacza, że zatwierdzenia experiment
zostały wypchnięte do repozytorium źródłowego, więc nawet jeśli je zgubisz tutaj, można je przynajmniej zapisać gdzie indziej.
Ponieważ Git nie sprawdza innych gałęzi, bezpieczne może być usunięcie gałęzi, ponieważ wiesz, że jest ona w pełni połączona z inną gałęzią; możesz to zrobić z -D
opcją, jak wskazano, lub przełączyć się najpierw na ten oddział i pozwolić Gitowi potwierdzić w pełni scalony status.