2010-12-08 9 views
11

Gibt es eine praktische Möglichkeit, mein lokales Git Repo zu vergessen, entfernte Zweigstellen zu löschen? git svn fetch "synchronisiert nicht alles" wie ich es mir erhofft hatte. Mein lokaler Repo wurde mit einem Import des Standard-SVN-Repo-Layouts (git svn -s …) eingerichtet.Wie kann ich git-svn entfernte Zweige, die nicht mehr existieren, loswerden?

verwandte: Why does git remote not list anything on my git-svn repo?

+0

Mein erster Gedanke wäre, nur die Dateien zu löschen, die diese Zweige darstellen, die nur kleine Textdateien in '.git/refs/remotes' sind. Aber es gibt wahrscheinlich einen richtigeren Weg als den, und ich bin mir sicher, dass es möglich wäre, Dinge durcheinander zu bringen, wenn du im Ordner ".git" herumstochern würdest, ohne wirklich zu wissen, was du tust. – MatrixFrog

+0

Sie sollten auch Ihre '.git/config' Datei ansehen und alle Erwähnungen dort löschen. – MatrixFrog

Antwort

0

Am ersten Gedanken, würde ich vorschlagen git remote prune versuchen. Auszug aus documentation:

Prune

Löscht alle veralteten Fernverfolgung Zweige unter. Diese veralteten Verzweigungen wurden bereits entfernt aus dem Remote-Repository mit der Referenznummer von, aber sind immer noch lokal in "remotes /".

Mit --dry-run-Option, melden Sie, was Filialen beschnitten werden, aber nicht tatsächlich beschneiden sie.

Ich denke, dies auch mit einer Fernbedienung namens svn funktionieren soll ...

+1

nein ... git-svn speichert Fernbedienungen nicht in der üblichen Weise, und auch nicht in einer handlichen Abstraktion davon ... es gibt keine Fernbedienungen, 'git remote' hat keine Ausgabe. –

15

Sie entfernte Niederlassungen verwaisten entfernen, indem Sie die folgenden Befehle ausführen:

git branch -d -r my_branch 
rm -rf .git/svn/refs/remotes/my_branch 

Um alle verwaisten Zweige zu entfernen sofort statt einzeln, siehe die Antwort here.

+0

Ich musste auch 'rm .git/refs/remotes/origin/my_branch' eingeben, damit der Zweig nicht angezeigt wurde. Außerdem: 'rm -rf .git/svn/refs/remotes/origin/mein_zweig /' anstelle von 'rm -rf .git/svn/refs/remotes/mein_zweig /' (beachte den 'Ursprung'). Irgendeine Idee warum? –

+0

Um mir selbst über den Unterschied zu antworten, habe ich wahrscheinlich '--prefix' beim Klonen verwendet, was Standardverhalten ab 2.0 ist. –

Verwandte Themen