Warum nicht git erlauben Sie mir, um sicher zu löschen einer Filiale?
Brauchte ich zum Zusammenführen von zwei äste -- second
in first
und dann loswerden second
. Hier ist, was ich getan habe:
git clone
d das Projekt, um eine neue Kopiegit checkout --track origin/second
, einige änderungen vorgenommen und begangengit checkout --track origin/first
, einige änderungen vorgenommen und begangengit merge second
(git sagt "merge made by recursive")git branch -d second
Dann git sagt:
$ 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'.
Warum ist das passiert? Ich habe nie bekommen Sie diese Meldung nach einer Zusammenführung vor. Die Zusammenführung hat Prima funktioniert, keine Konflikte. Wie kann ich sicher löschen second
Zweig?
git checkout second
gefolgt vongit push origin second
macht git aufhören, zu jammern, aber ich verstehe nicht warum.- Eine wilde Vermutung, aber vielleicht git sich beschwert, dass Sie nicht geschoben
second
zu Herkunft, vor dem löschen es? Auch stellen Sie sicher, Sie sind nicht in »detached HEAD« - Zustand - ja, Sie scheinen Recht zu sein, aber warum sollte git egal, ob ich habe geschoben
second
? - Er will nicht, Sie zu verlieren, die lokalen änderungen, die nur zu einem remote-branch (Obwohl, ich habe noch nie gesehen, dass die Nachricht von mir). Ich werde Graben, um in die Quelle, um die Logik dahinter.
- In diesem Fall, weiß er, dass
second
ist ein tracking-branch fürorigin/second
, so will es wissen, dass änderungen aufsecond
geschoben wurden, umorigin
. Wenn es nicht ein tracking-branch, glaube ich nicht, es würde beschweren sich über diese. Die Tatsache, dasssecond
wurde zusammengeführtfirst
lokal scheint nicht wichtig zu seingit
an dieser Stelle, obwohl es scheint, Sie könnten, machen es wahrscheinlich der Fall, da es zumindest zusammengelegt worden in etwas anderes, das löschen der Zweig sollte akzeptabel sein. - Wenn Sie sicher sind, dass Sie alles, was Sie brauchen, von diesem Zweig können Sie mithilfe der option-D, um zu erzwingen, das löschen
- was ist die Ausgabe von git branch --enthält Sekunde? Es bedeutet, dass der Zweig ist komplett zusammengeführt?
- Leider, ich würde schon aus ein paar mehr änderungen, so war ich nicht in der Lage, um zu versuchen, dass.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Basierend auf meine Experimente und @knittl und @twalberg Kommentare, es scheint, dass git nur wollte, dass ich Schiebe meine änderungen an der
second
Zweig, bevor Sie Sie löschen.Habe ich:
arbeitete, ohne Warnungen.
git branch -D second
lösen es so gut oder ist es eine gefährliche Praxis?origin
remote wäre anders.Zwei Linien