2012-08-27 17 views
43

Proprio desidera ottenere una migliore comprensione del messaggio di avviso dopo ho cancellato una filiale localegit branch -d dà avvertimento

avvertimento: non eliminazione dei branch 'old_branch' che è stata fusa per 'refs/remotes/origin/old_branch', ma ancora fuse per HEAD.

+5

se unisci --quindi il tuo vecchio_branco riceverai questo avviso sempre quando lo elimini localmente. Quando lo schiacciamento dell'indice viene ripristinato, quindi, non corrisponde a old_branch HEAd –

risposta

19

Supponendo attualmente si dispone master estratto, significa che le modifiche apportate in old_branch non sono presenti in master. Tuttavia, essi sono presenti in old_branch su origin.

+1

Sì. Questa è la risposta corretta! "ma non ancora uniti a' HEAD' ", il' HEAD' qui fa riferimento al HEAD del ramo master locale. – Devy

+0

Ma origin/old_branch viene unito in origine/master. Più tardi ho fatto git pull sul master branch. Ancora lo stesso errore. Non è questo bug in GH? – vikramvi

33

Questo è solo un avviso che si sono apportate modifiche al ramo su origin, ma non vengono unite in master, quindi lo si sta eliminando solo localmente.

E si avverte che non si dispone più di una copia locale di quel ramo, ma esiste in origin

Se si desidera eliminare il ramo a distanza così, utilizzare git push --delete origin old_branch

+2

Sì, 'master' non è coinvolto in questo. Intendi il ramo attuale, piuttosto. ';)' – fernandoespinosa

+1

Ricevo questo avviso anche se faccio un 'git branch -d branch_name' che dovrebbe eliminare solo il branch localmente. Perché l'avvertimento è necessario in questo caso? –

+0

Ma origin/old_branch viene unito in origine/master. Più tardi ho fatto git pull sul master branch. Ancora lo stesso errore. Non è questo bug in GH? – vikramvi

2

Per aggiungere al altre risposte, questo può anche significare che il cambiamento potrebbe essere unito al master, solo che la copia locale del master non lo rispecchia ancora. In entrambi i casi questo ti informa che la copia locale del tuo master non ha le modifiche che hai spinto all'origine. Unita/Non è fusa ... forse, forse non

2

Questo significa che la vostra filiale locale old_branch sia aggiornato con il ramo a distanza old_branch sul telecomando origin ma non è fusa al ramo master che è considerato il ramo principale in il pronti contro termine.

È solo una precauzione da git. Ti dà un suggerimento: forse hai fatto il tuo lavoro nel ramo argomento e dimentica di unirlo al ramo principale?


aggiornamento

Git si avverte di perdere le modifiche. Ad esempio se non hai il tuo old_branch sul git master quindi non ti permette di eliminare anche il ramo che non è stato immesso nel master (ben lo permetta, ma con il tasto -D che è l'opzione force-delete).

+5

Non necessariamente 'master', ma l'attuale' HEAD'. –

+0

Quindi il -D è quando non hai condiviso il ramo da eliminare (in realtà è commit) con qualsiasi ramo remoto. Mentre l'avvertimento è di informarti che hai condiviso il ramo (commette) con il telecomando, ma non è unificato in HEAD.HEAD è HEAD, remote/refs/HEAD non è la stessa. Ma per favore correggimi se ho torto riguardo alle differenze tra HEAD remoto e HEAD locale. – Eric