git branch -d dà un avvertimento


91

Voglio solo avere una migliore comprensione del messaggio di avviso dopo aver eliminato un ramo locale

avviso: eliminazione del ramo 'old_branch'che è stato unito a 'refs/remotes/origin/old_branch', ma non ancora unito a HEAD.


29
se unisci --squash al tuo vecchio_braccio riceverai questo avviso sempre quando lo elimini localmente. Quando si schiaccia l'indice viene ripristinato quindi non corrisponde a old_branch HEAd
Antoine Wils

Mentre le altre risposte sono corrette, il commento di Antoine è stato il motivo almeno nel mio caso.
Squrppi

Risposte:


66

Questo ti avverte solo che hai le modifiche inviate al ramo origin, ma non sono unite master, quindi lo stai eliminando solo localmente.

Ti avverte che non hai più una copia locale di quel ramo, ma esiste in origin

Se vuoi eliminare anche il ramo remoto, usa git push --delete origin old_branch


9
Sì, masternon è coinvolto in questo. Intendi piuttosto il ramo attuale. ;)
Fernando Espinosa

1
Ottengo questo avviso anche se eseguo un'operazione git branch -d branch_nameche dovrebbe eliminare solo il ramo localmente. Perché l'avviso è necessario in questo caso?
Akshay Damle

2
Ma origin / old_branch viene unito a origin / master. Successivamente ho eseguito git pull origin sul master branch. Sempre lo stesso errore. Non è questo bug in GH?
vikramvi

36

Supponendo che tu abbia attualmente mastereffettuato il check-out, significa che le modifiche apportate in old_branchnon sono presenti in master. Tuttavia, sono presenti in old_branchsu origin.


4
Sì. Questa è la risposta corretta! "ma non ancora unito a HEAD", HEADqui fa riferimento all'HEAD del ramo principale locale.
Devy

3
Ma origin / old_branch viene unito a origin / master. Successivamente ho eseguito git pull origin sul master branch. Sempre lo stesso errore. Non è questo bug in GH?
vikramvi

1
@vikramvi Supponendo che tu abbia mastereffettuato il check out localmente, può ancora verificarsi se lo SHA di uno dei commit è cambiato; cioè hai ribasato origin/old_branchsu origin/master. Anche se fosse un avanzamento veloce, questo genererà un nuovo SHA per ogni nuovo commit da origin/old_branch, facendo sì che git veda gli SHA originali nel tuo locale old_branchcome non uniti dopo aver trasferito le modifiche al tuo masterramo locale . Puoi vedere questa risposta e questa risposta sul motivo per cui ciò si verifica.

8

Ciò significa che il tuo ramo locale old_branchè aggiornato con il ramo remoto old_branchsu remoto originma non è unito al ramo masterche è considerato il ramo principale nel repository.

È solo una precauzione di git. Ti dà un suggerimento: forse hai svolto il tuo lavoro nel topic-branch e hai dimenticato di unirlo al ramo principale?


aggiornare

Git ti avverte di perdere le modifiche. Ad esempio, se non hai il tuo old_branchsul master git, non ti permettere nemmeno di eliminare il ramo non unito al master (beh, lo consente, ma con la chiave -Dche è l' force-deleteopzione).


7
Non necessariamente master, ma l'attuale HEAD.
Frozen Flame

Quindi il -D è quando non hai condiviso il ramo che viene cancellato (in realtà è commit) con nessun ramo remoto. Mentre l'avviso è di informarti che hai condiviso il ramo (commit) con il telecomando ma semplicemente non è stato unito a HEAD. HEAD è HEAD, remote / refs / HEAD non è lo stesso. Ma per favore correggimi se sbaglio riguardo alle differenze tra HEAD remoto e HEAD locale.
Eric,

7

Per aggiungere alle altre risposte, questo può anche significare che la modifica potrebbe essere fusa in master, solo che la tua copia locale di master non la riflette ancora. In entrambi i casi questo ti informa semplicemente che la copia locale del tuo master non ha le modifiche che hai inserito su origin. Fusa / Non fusa ... forse, forse no

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.