Git avverte che potresti perdere la cronologia eliminando questo ramo. Anche se in realtà non eliminerebbe alcun commit immediatamente, alcuni o tutti i commit sul ramo diventerebbero irraggiungibili se non facessero parte di un altro ramo.
Affinché il ramo experiment
sia "completamente unito" in un altro ramo, il commit della punta deve essere un antenato della punta dell'altro ramo, effettuando i commit in experiment
un sottoinsieme dell'altro ramo. Ciò rende sicuro l'eliminazione experiment
, poiché tutti i suoi commit rimarranno parte della cronologia del repository tramite l'altro ramo. Deve essere "completamente" unito, perché potrebbe essere stato già unito più volte, ma ora sono stati aggiunti commit dall'ultima unione che non sono contenuti nell'altro ramo.
Git, tuttavia, non controlla tutti gli altri rami nel repository; solo due:
- L'attuale ramo (HEAD)
- Il ramo a monte, se ce n'è uno
Il "ramo a monte" per experiment
, come nel tuo caso, è probabilmente origin/experiment
. Se experiment
viene completamente unito nel ramo corrente, Git lo elimina senza alcun reclamo. Se non lo è, ma è completamente unito nel suo ramo a monte, allora Git procede con un avviso che sembra:
warning: deleting branch 'experiment' that has been merged
to 'refs/remotes/origin/experiment', but not yet merged to
HEAD.
Deleted branch experiment (was xxxxxxxx).
Dove xxxxxxxx
indica un ID di commit. La fusione completa a monte indica che gli commit experiment
sono stati trasferiti nel repository di origine, in modo che, anche se li perdi qui, possano almeno essere salvati altrove.
Poiché Git non controlla altri rami, potrebbe essere sicuro eliminare un ramo perché sai che è completamente unito in un altro; puoi farlo con l' -D
opzione come indicato o passare prima a quel ramo e lasciare che Git confermi lo stato completamente unito per te.