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łąź experimentzostał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 experimentsą 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 experimentjest 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 xxxxxxxxwskazuje identyfikator zatwierdzenia. Bycie w pełni zintegrowanym w jego górnej części oznacza, że zatwierdzenia experimentzostał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 -Dopcją, jak wskazano, lub przełączyć się najpierw na ten oddział i pozwolić Gitowi potwierdzić w pełni scalony status.