Wenn ich die Bash-Autovervollständigung in Git verwende, werden mir immer wieder Zweige alter Fernbedienungen angezeigt, die ich nicht mehr habe. Wenn ich ein mache git branch -la
, zeigt es diese alten Fernbedienungen und Zweige, während ein git branch -l
nicht. A ls .git/refs/remotes/
zeigt sie auch. Sie sind jedoch in meiner .git / config nicht vorhanden und werden beim Ausführen auch nicht angezeigt git remote show
.
Wie kann ich sie entfernen, weil meine Autovervollständigungsliste momentan zu lang ist?
Ich habe es bereits versucht:
git reflog expire --expire=now --all
git gc --prune=now
rm .git/refs/remotes/theoldremote
git remote prune theoldremote
Mir ist auch bewusst, dass ich das Repo einfach neu klonen kann, aber das ist nur Betrug ;-)
git remote rm
now (git 2.0.1, Juni 2014) löscht zuerst die Remote-Tracking-Zweige. Das soll helfen, alte Äste nicht aufzuräumen. Siehe meine Antwort untenAntworten:
Git löscht die (lokalen) Remote-Tracking-Zweige nicht automatisch, wenn der Zweig im Remote-Repository gelöscht wurde. Darüber hinaus wurden in V2.0.1 Remote-Tracking-Zweige in einigen Fällen nicht gelöscht, als Sie die Remote aus Ihrer Git-Konfiguration entfernt haben (siehe VonCs Antwort).
Führen Sie Folgendes aus, um veraltete Remote-Tracking-Zweige (Zweige, die im Remote-Repository gelöscht wurden) für eines Ihrer Remote-Repositorys zu löschen
So zitieren Sie die Manpage oder
git remote
:Aus Ihrer Frage geht jedoch hervor, dass Sie manuell entfernt wurden
.git/refs/remotes/theoldremote
, sodass Git nicht mehr über das Remote-Repository Bescheid weiß, zu dem die Remote-Tracking-Zweige gehörten. So sollst du es nicht machen.Der normale Weg, ein Remote-Repository zu entfernen, ist die Ausführung
Dadurch wird die Fernbedienung von Ihrem entfernt
.git/config
und die Fernverfolgungszweige gelöscht.Wenn Sie nur das Verzeichnis unter löschen
.git/refs/remotes/
, bleiben die Zweige zurück. Dann müssen Sie sie manuell entfernen:Sie benötigen eine Option
-r
zum Löschen eines Remote-Zweigs.quelle
fatal: 'kolichikov' does not appear to be a git repository
.git gc
, wodurch git prune aufgerufen wird. " Beachten Sie jedoch, dass diesgit gc
nicht kompatibel ist mit--dry-run
.git branch -rd <remote>/<branchname>
war das, wonach ich gesucht habe. Vielen Dank!ich benutze
um einen Zweig vom Server zu entfernen.
Remote-Referenzen entfernen, die auf dem Server nicht mehr vorhanden sind
quelle
fatal: 'kolichikov' does not appear to be a git repository
Hinweis: Während git remote prune die Antwort ist, sollten Sie wissen, dass a ab git 2.0.1 (25. Juni 2014) zunächst
git remote rm
die Remote-Tracking-Zweige entfernt .Hoffentlich sollte man alte Äste nach einem nicht mehr aufräumen müssen
git remote rm
.Siehe Commit b07bdd3 von Jens Lindström (
jensl
)remote rm
: Remote-Konfiguration als letzte löschenAber wenn Sie müssen, kann ein einfaches
git fetch
ausreichen, vorausgesetzt, Sie haben zuerst festgelegt:quelle
Schieben Sie nichts in einen Zweig, um ihn zu löschen:
git push remote :remote_branch
Es ist irgendwo in der Dokumentation, aber es ist nicht wirklich offensichtlich.
Oder habe ich Ihre Frage falsch verstanden?
quelle
git
Ok, ich habe es verstanden. Das Problem war, dass die Fernbedienungen nicht mehr existieren, aber irgendwo in der Git-Datenbank. Ich fügte die Fernbedienungen wieder hinzu und tat es dann
Danach verschwinden sie von der Liste. Irgendwie habe ich sie nicht richtig entfernt, bevor ich denke.
quelle
Ich war verwirrt, als auf der Serverseite gelöschte Remote-Zweige beim Ausführen immer noch angezeigt wurden:
Der folgende Befehl hat dies für mich behoben (auf Git-Version 2.25.0):
quelle