2012-04-24 4 views
129

Ich versuche, einen Remote-git Zweig mitWenn Remote-git branch Löschen "Fehler: nicht in der Lage zu unqualifiziertem Ziel schieben"

git push origin :my_remote_branch 

und immer zu löschen:

error: unable to push to unqualified destination: my_remote_branch 
The destination refspec neither matches an existing ref on the remote nor 
begins with refs/, and we are unable to guess a prefix based on the source ref. 
error: failed to push some refs to '[email protected]:/myrepo' 

ist meine aktuellen sind Verzweigungen

git branch -a 
* develop 
    master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/develop 
    remotes/origin/my_remote_branch 

git branch -r --merged 
    origin/HEAD -> origin/master 
    origin/develop 
    origin/master 

Irgendwelche Ideen auf, wie ich von diesem Zweig loswerden kann, würde geschätzt werden.

+0

Haben Sie hilft versuchen, eine 'git fetch'to zu sehen, ob es, dass nicht vorhandene Fern Namen festgelegt? Haben Sie versucht, in Ihre '.git \ refs \ remotes \ origin' zu gehen und die Datei' my_remote_branch' zu löschen, um zu sehen, ob das ausreicht? – VonC

+0

hat 'git fetch' gemacht, aber das hat nicht geholfen. Versuchen Sie, nach einer einfacheren Lösung zu suchen, bevor Sie versuchen, die Datei manuell zu löschen. – Hugo

+0

versuchen, diese Datei zu löschen oder zumindest zu verschieben: Sie enthält nur die SHA1 der Spitze dieser Verzweigung. – VonC

Antwort

255

Die Tatsache, dass refs/remotes/origin/my_remote_branch in Ihrem lokalen Repository vorhanden ist, bedeutet nicht, dass refs/heads/my_remote_branch im Remote-Repository origin existiert.

Do git fetch -p origin machen refs/remotes/origin/my_remote_branch weggehen, wenn es bereits im Ursprung gelöscht wurde. Die Option -p weist Fetch an, alle Verfolgungszweige zu löschen, die nicht mehr in den entsprechenden Fernbedienungen vorhanden sind. Standardmäßig werden sie beibehalten.

+10

'git fetch -p origin' reparierte es für mich. Vielen Dank. – redimp

+2

Das hat auch für mich funktioniert. – Deviljho

+2

gute Antwort !!!! – jwjin

54

Frage gefunden cleaning up old remote git branches und dies hat den Trick

git branch -r -d origin/my_remote_branch 
+0

Ich habe genau eine Stunde lang versucht, genau das zu tun, vielen Dank! – sebkkom

+0

Dadurch wird die Remote-Zweigstelle nicht gelöscht. Wenn Sie ein Git holen gehen, sehen Sie den Zweig wieder. Es entfernt es nur aus Ihrer lokalen Liste der Remote-Zweigstelle. –

+2

@PatrickDesjardins genau 'git push Herkunft: my_remote_branch' löscht den Zweig von der Fernbedienung und' git branch -r -d Herkunft/my_remote_branch' entfernt es aus meiner lokalen Liste der Remote-Filialen – Hugo

3
git branch -r -d origin/my_remote_branch 

nicht genug für mich war. Bevor ich musste Server gehen und direkt mit Git-Verzeichnis arbeiten, um den Zweig zu entfernen (was gefährlich und hässlich):

ssh mygitserver 
su - git 
cd /home/git/repositories/my_remote_branch.git/ 
git --git-dir=. --work-tree=/tmp/ branch -D my_remote_branch 
+0

Es ist nicht nur gefährlich und hässlich, es ist auch _wrong_. Zum einen geht es bei dieser Frage darum, den Zweig lokal zu löschen, wenn er remote gelöscht wurde. Zum anderen ist das Löschen eines Zweigs aus der Ferne nur eine Sache von 'git push origin: my_remote_branch'. Achte auf den Doppelpunkt. –

+0

Du hast recht Jan, dieser 'git push Herkunft: my_remote_branch' ist normal. Dieser hässliche und gefährliche Weg ist, wenn dies nicht funktioniert (z. B. aufgrund eines falsch konfigurierten Git). – pevik

11

ich auf diese lief, wenn ein Remote-Zweig zu löschen versuchen, die bereits gelöscht worden waren. Alles, was ein Prune war nötig war:

git remote prune origin 
0

hatte das gleiche Problem, ich bearbeitete meine ./.git/config Datei manuell schließen ein:

[branch "branchName"] 
remote = origin 
merge = refs/heads/branchName 

, die in Folge: error: src refspec branchName matches more than one. Dieses ich durch Laufen $git tag -d branchName fixiert. Danach konnte ich den neuen Zweig nach Upstream schieben.

0

Ich habe das ähnliche Problem. Zuerst ging ich zu dieser Diskussion, aber ich konnte das Problem nicht lösen, bis ich https://stackoverflow.com/a/32147743/4209849 sah.

die einfach einen Tipp hinzufügen, um origin/my-branch-name und zu unterscheiden.

Um genau zu sein, sollte ich verwenden:

git push origin :my_remote_branch 

statt

git push origin :origin/my_remote_branch 

Das ist mein Problem zumindest gelöst, hoffen, dass es auch andere helfen würde.

3

Versuchen zwei Optionen folgende Remote Zweig löschen gewaltsam

Option 1

get push origin --delete <branchName> 

Option 2

git fetch -p origin 
git branch -r -d origin/<branchName> 
1

Für mich war das Problem, dass dies mein Standard-Zweig auf Github war. Ich änderte Standardzweig, dann wurde der Löschvorgang erfolgreich abgeschlossen.

Hoffe, dass es jemand

Verwandte Themen