2012-09-19 16 views
15

Potrzebowałem scalić dwie gałęzie - second w first, a następnie pozbyć się second. Oto co zrobiłem:Dlaczego git nie pozwala mi bezpiecznie usunąć oddział?

  • git clone d projekt, aby uzyskać nową kopię
  • git checkout --track origin/second, dokonaliśmy pewnych zmian, a popełnione
  • git checkout --track origin/first, dokonaliśmy pewnych zmian, a popełnione
  • git merge second (git mówi " połączyć przez rekurencyjny ")
  • git branch -d second

Następnie git mówi:

$ git branch -d second 
warning: not deleting branch 'second' that is not yet merged to 
     'refs/remotes/origin/second', even though it is merged to HEAD. 
error: The branch 'second' is not fully merged. 
If you are sure you want to delete it, run 'git branch -D second'. 

Dlaczego tak się dzieje? Nigdy wcześniej nie otrzymałem tego komunikatu po scaleniu. Scalanie działało dobrze, bez konfliktów. Jak bezpiecznie usunąć gałąź second?

+0

'git checkout second', po którym następuje' git push origin second' sprawia, że ​​git przestaje narzekać, ale nie rozumiem dlaczego. –

+1

Dzikich domysłów, ale może git skarży się, że nie usunąłeś 'second' pochodzenie przed usunięciem? Upewnij się też, że nie jesteś w »odłączonym HEAD« stanie – knittl

+0

@knittl tak, wydajesz się mieć rację, ale dlaczego miałbyś się tym przejmować, czy pchnąłem 'sekundę'? –

Odpowiedz

32

Na podstawie moich eksperymentów oraz komentarzy @ knittla i @ twalberga wydaje się, że git chciał, żebym najpierw przeniósł moje zmiany do gałęzi second, zanim ją usunę.

zrobiłem:

$ git checkout second 
$ git push origin second 
$ git checkout first 
$ git branch -d second 

który pracował bez ostrzeżenia.

+0

Czy nie "git branch -D second" rozwiązać go również, czy jest to niebezpieczne praktyki? – Bart

+0

@Bart to zależy od tego, co masz na myśli przez "rozwiązać". Wykonanie tego nie przyniosłoby takiego samego rezultatu jak moje rozwiązanie - stan zdalnego "pochodzenia" byłby inny. –

+0

@Bart, który powinien być używany tylko wtedy, gdy wiesz, co robisz. Git najczęściej daje pomocne ostrzeżenia, więc zawsze lepiej nie zmuszać do tego rzeczy. – cst1992