2017-05-29 7 views
0

Nach dem Zusammenführen meiner Änderungen auf dem Haupt-Remote-Zweig, ich wollte den Namen meiner Filiale entfernen und verlassen Sie die Filiale, wo es ist. Löschen Sie nur den Namen (in meinem Team mögen sie keine Zweige mit Namen, es sei denn, es handelt sich um Freigaben).GIT Rückgängig Zweig-D

Also habe ich folgendes:

git branch -d branch_2b_deleted 
error: The branch 'branch_2b_deleted' is not fully merged. 
If you are sure you want to delete it, run 'git branch -D branch_2b_deleted' 
git branch -D branch_deleted 
git push origin :remoteHead 

Aber der ganze Zweig wurde entfernt, und auch auf dem Kopf verschwanden die Änderungen. Ist es möglich, diesen Befehl "branch -D" rückgängig zu machen?

Sonst muss ich die Arbeit wiederholen und auf eine Pull-Anfrage warten. Ich weiß auch nicht, warum die Nachricht, dass der Zweig nicht vollständig merget, schien mir, dass alle Änderungen, wo auf dem Remote-Zweig.

--- edit --- Ich löste durch erneutes Zusammenführen, (jetzt ist es schwer zu erklären, wie der Baum aussah). Danach hatte ich ein anderes Problem, denn als ich einem Zweig ein Tag zuweisen wollte, wurde dieses Tag BranchB zugewiesen. Meine Konsole sagte mir, dass ich auf Filiale A bin, aber GIT zeigte auf Filiale B. Also ich habe:

$ git pull 
There is no tracking information for the current branch. 
Please specify which branch you want to merge with. 
See git-pull(1) for details 

git pull <remote> <branch> 

If you wish to set tracking information for this branch you can do so with: 

git branch --set-upstream-to=origin/<branch> branchA 

zu lösen, ich tat:

git pull origin branchA 

und dies taten die Arbeit. Ich war nicht auf dem ZweigA auch wenn auf der Konsole geschrieben wurde, dass ich auf dem Zweig A bin (nach: git checkout branchA). Das System sollte in solchen Fällen beraten ich denke, nicht zu sagen, dass ich "einfach" auf Zweig war ...

+0

Bitte lesen Sie ein Tutorial auf Git-Zweige, die Tatsache, dass Git Ihnen gesagt, dass es nicht vollständig zusammengeführt wurde und dann ging es weiter und fragte sie, Ihre Branche trotzdem zu löschen, und dann sind überrascht, dass der Zweig gelöscht wurde, zeigt Ihnen an muss wirklich lernen, wie Zweige in Git funktioniert. –

+0

Der Zweig wurde zusammengeführt, und während der Zusammenführung war kein Fehler aufgetreten. Vielleicht ein Bug? Da stimmt etwas nicht. Jetzt zum Beispiel bin ich auf Zweig A, ich füge ein Tag hinzu und das Tag erscheint in einem anderen Zweig. – fresko

Antwort

3

Ja, es gibt ein Dienstprogramm in Git namens Git Reflog, wo alle Ihre Änderungen aufgezeichnet werden. Wenn Sie diesen Zweig wiederherstellen möchten tun die Folowing:

git reflog Sie und die SHA1 für die an der Spitze des gelöschten Zweig begehen finden, dann nur

git checkout -b <branch> <sha>

+0

In Reflog kann ich den vorherigen Befehl finden, wenn ich diesen Zweig "verließ", um ihn zu löschen, aber nicht den Befehl des Löschens. – fresko

+0

Ja, die "linke" Aktion funktioniert auch dafür. Verwenden Sie den SHA dieser Aktion im Befehl "git checkout", den ich Ihnen vorgeschlagen habe – Jesferman

0

Sie verwirren is not fully merged mit is not pushed.
Wenn Sie e. G. sind in der lokalen Niederlassung master und Sie versuchen, Zweig foo zu löschen, die wurde nicht in master zusammengeführt Sie erhalten diese Nachricht.
Wenn Sie in der lokalen Niederlassung sind bar und Sie versuchen, den gleichen Zweig foo zu löschen, aber es wurde in bar zusammengeführt, erhalten Sie die Nachricht nicht.
Dies ist, um sicherzustellen, dass Sie einen Zweig nicht löschen, den Sie noch nicht zusammengeführt haben, aber in Zukunft zusammenführen möchten, da Sie wahrscheinlich Commits verlieren werden.

Um Ihre Niederlassung zu finden, können Sie die reflog von HEAD betrachten, indem Sie einfach git reflog tun und suchen Sie nach dem letzten Mal, als Sie diesen Zweig ausgecheckt hatten. Das sollte dein letzter Einsatz in diesem Zweig sein. Wenn nicht, könnten Sie es mit git fsck --lost-found als baumelnden Objekt finden.

Wenn Sie Ihren letzten Commit auf dem Zweig gefunden haben, erstellen Sie ihn einfach mit git branch your-branch <found commit-ish> oder git checkout -b your-branch <found commit-ish> neu.

Um nur einen Zweig auf der entfernten Seite zu löschen, ohne den lokalen Zweig zu löschen, verwenden Sie einfach den letzten Ihrer Befehle, d. e.git push origin :remote-branch was bedeutet, "Push nichts auf Remote-Zweig auf Herkunft" und damit auf den Ursprung zu löschen, ohne Ihren lokalen Zweig zu berühren.

Verwandte Themen