Ich möchte eine Zweigstelle sowohl lokal als auch remote löschen.
$ git branch -d remotes/Origin/bugfix
error: branch 'remotes/Origin/bugfix' not found.
$ git branch -d Origin/bugfix
error: branch 'Origin/bugfix' not found.
$ git branch -rd Origin/bugfix
Deleted remote branch Origin/bugfix (was 2a14ef7).
$ git Push
Everything up-to-date
$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> Origin/bugfix
Already up-to-date.
Was kann ich anders machen, um den Zweig remotes/Origin/bugfix
sowohl lokal als auch remote erfolgreich zu löschen?
$ git Push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>
Beachten Sie, dass der entfernte Name in den meisten Fällen Origin
lautet.
Verwenden Sie eine der folgenden Methoden, um den lokalen Zweig zu löschen:
$ git branch -d branch_name
$ git branch -D branch_name
Hinweis: Die Option -d
ist ein Alias für --delete
, der den Zweig nur löscht, wenn er bereits vollständig in seinem vorgelagerten Zweig zusammengeführt wurde. Sie können auch -D
verwenden, ein Alias für --delete --force
, mit dem der Zweig "unabhängig von seinem Zusammenführungsstatus" gelöscht wird. [Quelle: man git-branch
]
Ab Git v1.7.0 können Sie einen entfernten Zweig mit löschen
$ git Push <remote_name> --delete <branch_name>
das könnte leichter zu merken sein als
$ git Push <remote_name> :<branch_name>
das wurde in Git v1.5.0 "hinzugefügt, um einen entfernten Zweig oder ein Tag zu löschen."
Ab Git v2.8.0 können Sie auch git Push
mit der Option -d
als Alias für --delete
verwenden.
Daher wird die Version von Git, die Sie installiert haben, bestimmen, ob Sie die einfachere oder schwierigere Syntax verwenden müssen.
Aus Kapitel 3 von Pro Git von Scott Chacon:
Remote-Zweige löschen
Angenommen, Sie sind mit einer Remote-Verzweigung fertig. Angenommen, Sie und Ihre Mitarbeiter sind mit einer Funktion fertig und haben sie in der Master-Verzweigung Ihrer Fernbedienung (oder in der Verzweigung, in der sich Ihre stabile Code-Zeile befindet) zusammengeführt. Sie können einen entfernten Zweig mit der eher stumpfen Syntax
git Push [remotename] :[branch]
löschen. Wenn Sie Ihren Server-Fix-Zweig vom Server löschen möchten, führen Sie Folgendes aus:$ git Push Origin :serverfix To [email protected]:schacon/simplegit.git - [deleted] serverfix
Boom. Kein Zweig mehr auf Ihrem Server. Möglicherweise möchten Sie diese Seite überprüfen, da Sie diesen Befehl benötigen und die Syntax wahrscheinlich vergessen werden. Eine Möglichkeit, sich an diesen Befehl zu erinnern, ist das Aufrufen der
git Push [remotename] [localbranch]:[remotebranch]
-Syntax, die wir etwas früher durchgearbeitet haben. Wenn Sie den Teil[localbranch]
weglassen, sagen Sie im Grunde: "Nehmen Sie nichts auf meine Seite und lassen Sie es[remotebranch]
sein."
Ich habe git Push Origin :bugfix
ausgegeben und es hat wunderbar funktioniert. Scott Chacon hatte recht - ich möchte dog ear diese Seite (oder virtuell dog ear, indem ich dies bei Stack Overflow beantworte).
Dann sollten Sie dies auf anderen Rechnern ausführen
git fetch --all --Prune
änderungen zu verbreiten.
Matthews Antwort eignet sich hervorragend zum Entfernen von entfernten Zweigen, und ich schätze auch die Erklärung, aber um eine einfache Unterscheidung zwischen den beiden Befehlen zu treffen:
So entfernen Sie eine lokale Verzweigung von Ihrem Computer:
git branch -d {the_local_branch}
(verwenden Sie stattdessen -D
, um das Löschen des Zweigs zu erzwingen, ohne den Status der Zusammenführung zu überprüfen)
So entfernen Sie einen Remote-Zweig vom Server:
git Push Origin --delete {the_remote_branch}
Referenz: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote
Wenn Sie detailliertere Erklärungen zu den folgenden Befehlen wünschen, lesen Sie die ausführlichen Antworten im nächsten Abschnitt.
Einen entfernten Zweig löschen:
git Push Origin --delete <branch> # Git version 1.7.0 or newer
git Push Origin :<branch> # Git versions older than 1.7.0
Lokale Filiale löschen:
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches
Löschen eines lokalen Remote-Tracking-Zweigs:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --Prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Beachten Sie beim Löschen von Zweigen sowohl lokal als auch remote, dass drei verschiedene Zweige betroffen sind :
X
.X
.Origin/X
, der den Remote-Zweig X
verfolgt.Das Originalplakat verwendet
git branch -rd Origin/bugfix
der nur seinen lokalen Fernverfolgungszweig Origin/bugfix
löschte und nicht den tatsächlichen Fernzweig bugfix
auf Origin
.
Um diesen tatsächlichen entfernten Zweig zu löschen, benötigen Sie
git Push Origin --delete bugfix
In den folgenden Abschnitten werden zusätzliche Details beschrieben, die beim Löschen Ihrer Remote- und Remote-Tracking-Zweige zu berücksichtigen sind.
Beachten Sie, dass durch das Löschen des Remote-Zweigs X
von der Befehlszeile aus mit einem git Push
auch der lokale Remote-Tracking-Zweig Origin/X
gelöscht wird Es ist nicht erforderlich, den veralteten Remote-Tracking-Zweig mit git fetch --Prune
oder git fetch -p
zu bereinigen, obwohl es nicht schaden würde, wenn Sie es trotzdem tun würden.
Sie können überprüfen, ob der Zweig für die Fernverfolgung Origin/X
ebenfalls gelöscht wurde, indem Sie Folgendes ausführen:
# View just remote-tracking branches
git branch --remotes
git branch -r
# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a
Wenn Sie Ihren Remote-Zweig X
nicht von der Befehlszeile gelöscht haben (wie oben), enthält Ihr lokales Repo weiterhin (einen inzwischen veralteten) Remote-Tracking-Zweig Origin/X
. Dies kann beispielsweise passieren, wenn Sie einen entfernten Zweig direkt über die GitHub-Weboberfläche gelöscht haben.
Eine typische Methode zum Entfernen dieser veralteten Remote-Tracking-Zweige (seit Git Version 1.6.6) besteht darin, einfach git fetch
mit dem --Prune
oder einem kürzeren -p
auszuführen. Beachten Sie, dass hierdurch alle veralteten lokalen Remote-Tracking-Zweige für alle Remote-Zweige entfernt werden, die auf der Remote nicht mehr vorhanden sind :
git fetch Origin --Prune
git fetch Origin -p # Shorter
Hier ist das relevante Zitat aus den Versionshinweisen zu 1.6.6 (Hervorhebung von mir):
"git fetch" lernte
--all
- und--multiple
-Optionen, um das Abrufen aus vielen Repositorys auszuführen, und--Prune
-Option, um die Fernverfolgung zu entfernen veraltete Zweige Diese machen "git remote update" und "git remote Prune" weniger notwendig (es ist jedoch nicht geplant, "remote update" oder "remote Prune" zu entfernen).
Anstatt Ihre veralteten lokalen Remote-Tracking-Verzweigungen durch git fetch -p
zu bereinigen, können Sie zusätzliche Netzwerkoperationen vermeiden , indem Sie die Verzweigungen einfach manuell mit den Flags --remote
oder -r
entfernen :
git branch --delete --remotes Origin/X
git branch -dr Origin/X # Shorter
Zum Löschen des entfernten Zweigs:
git Push Origin --delete <your_branch>
Um den lokalen Zweig zu löschen, haben Sie drei Möglichkeiten :
1: git branch -D <branch_name>
2: git branch --delete --force <branch_name> //same as -D
3: git branch --delete <branch_name> //error on unmerge
Erklären Sie: OK, erklären Sie einfach, was hier los ist!
Führen Sie einfach git Push Origin --delete
aus, um NUR Ihren entfernten Zweig zu löschen , fügen Sie den Namen des Zweigs am Ende hinzu, und dies löscht und Schieben Sie es gleichzeitig auf die Fernbedienung ...
Auch git branch -D
, die einfach den lokalen Zweig löschen NUR! ...
-D
steht für --delete --force
, wodurch der Zweig gelöscht wird, auch wenn er nicht zusammengeführt wurde (Löschen erzwingen). Sie können jedoch auch -d
verwenden, was für --delete
steht und einen entsprechenden Fehler auslöst Der Status der Zusammenführung von Zweigen ...
Ich erstelle auch das Bild unten, um die Schritte zu zeigen:
Sie können auch Folgendes verwenden, um den Remote-Zweig zu löschen
git Push --delete Origin serverfix
Welches macht das Gleiche wie
git Push Origin :serverfix
aber es kann einfacher sein, sich zu erinnern.
Tipp: Wenn Sie Zweige mit löschen
git branch -d <branchname> # deletes local branch
oder
git Push Origin :<branchname> # deletes remote branch
nur die referenzen werden gelöscht. Obwohl die Verzweigung tatsächlich auf der Fernbedienung entfernt wurde, befinden sich die Verweise auf sie immer noch in den lokalen Repositorys Ihrer Teammitglieder. Dies bedeutet, dass für andere Teammitglieder die gelöschten Zweige weiterhin sichtbar sind, wenn sie einen git branch -a
ausführen.
Um dies zu lösen, können Ihre Teammitglieder die gelöschten Zweige mit beschneiden
git remote Prune <repository>
Dies ist normalerweise git remote Prune Origin
.
Wenn Sie einen Zweig löschen möchten, checken Sie zuerst zu dem Zweig aus, der gelöscht werden soll.
git checkout other_than_branch_to_be_deleted
Lokale Filiale löschen:
git branch -D branch_to_be_deleted
Löschen des entfernten Zweigs:
git Push Origin --delete branch_to_be_deleted
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
Das ist ganz einfach: Führen Sie einfach den folgenden Befehl aus:
Um einen Git-Zweig sowohl lokal als auch remote zu löschen, löschen Sie zuerst den lokalen Zweig mit dem Befehl:
git branch -d example
(hier example
ist der Filialname)
Und danach entfernte Verzweigung mit Befehl löschen:
git Push Origin :example
Ein anderer Ansatz ist:
git Push --Prune Origin
WARNUNG: Dies löscht alle entfernten Zweige, die nicht lokal existieren. oder umfassender
git Push --mirror
lässt das Remote-Repository effektiv wie die lokale Kopie des Repository aussehen (lokale Heads, Remotes und Tags werden auf Remote gespiegelt).
In meinen Bash Einstellungen verwende ich Folgendes:
alias git-shoot="git Push Origin --delete"
Dann können Sie anrufen:
git-shoot branchname
Seit Januar 2013 beinhaltet GitHub eine Delete branch Klicken Sie auf der Seite "Zweige" neben jedem Zweig auf die Schaltfläche.
Relevanter Blog-Beitrag: Erstellen und Löschen von Zweigen
Lokal löschen:
Um eine lokale Niederlassung zu löschen, können Sie Folgendes verwenden:
git branch -d <branch_name>
Um einen Zweig gewaltsam zu löschen, verwenden Sie -D
anstelle von -d
.
git branch -D <branch_name>
Remote löschen:
Es gibt zwei Möglichkeiten:
git Push Origin :branchname
git Push Origin --delete branchname
Ich würde vorschlagen, dass Sie den 2. Weg verwenden, da er intuitiver ist.
Wenn Sie beide Schritte mit einem einzigen Befehl ausführen möchten, können Sie einen Alias dafür erstellen, indem Sie das Folgende zu Ihrem ~/.gitconfig
hinzufügen:
[alias]
rmbranch = "!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f"
Alternativ können Sie dies über die Befehlszeile mit zu Ihrer globalen Konfiguration hinzufügen
git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f'
NOTE: Bei Verwendung von -d
(Kleinbuchstabe d) wird der Zweig nur gelöscht, wenn er zusammengeführt wurde. Um das Löschen zu erzwingen, müssen Sie -D
(Großbuchstaben D) verwenden.
So löschen Sie Ihre Zweigstelle lokal und remote
Kasse zur Hauptniederlassung - git checkout master
Löschen Sie Ihren Remote-Zweig - git Push Origin --delete <branch-name>
Löschen Sie Ihre lokale Niederlassung - git branch --delete <branch-name>
Sie können dies auch mit git remote Prune Origin
tun.
$ git remote Prune Origin
Pruning Origin
URL: [email protected]/yourrepo.git
* [pruned] Origin/some-branchs
Entfernte Verfolgungszweige werden aus einer git branch -r
Auflistung entfernt und gelöscht.
Zusätzlich zu den anderen Antworten verwende ich häufig das Tool git_remote_branch . Es ist eine zusätzliche Installation, aber es gibt Ihnen eine bequeme Möglichkeit, mit Remote-Zweigen zu interagieren. In diesem Fall löschen:
grb delete branch
Ich finde, dass ich auch die Befehle publish
und track
ziemlich oft verwende
Einzeiliger Befehl delete sowohl local als auch remote :
D=branch-name; git branch -D $D; git Push Origin :$D
oder fügen Sie den folgenden Alias zu Ihrer ~/.gitconfig hinzu; Verwendung: git kill branch-name
[alias]
kill = "!f(){ git branch -D \"$1\"; git Push Origin --delete \"$1\"; };f"
Nehmen wir an, unsere Arbeit am Zweig "Kontaktformular" ist abgeschlossen und wir haben es bereits in "master" integriert. Da wir es nicht mehr brauchen, können wir es (lokal) löschen:
$ git branch -d contact-form
Und um den entfernten Zweig zu löschen:
git Push Origin --delete contact-form
Remote-Zweig löschen
git Push Origin :<branchname>
Lokale Filiale löschen
git branch -D <branchname>
Lokale Verzweigungsschritte löschen:
Sag einfach:
git branch -d <branch-name>
git Push Origin :<branch-name>
git Push Origin --delete <branch Name>
ist leichter zu merken als
git Push Origin :branchName
Jetzt kannst du es mit der GitHub Desktop App machen.
Nach dem Start der App
Lokal löschen Normal),
git branch -d my_branch
Wenn Ihr Zweig beim Neu-Basieren/Zusammenführen nicht ordnungsgemäß ausgeführt wurde, wird der Fehler Rebase/Merge in progress
angezeigt. In diesem Fall können Sie Ihren Zweig nicht löschen.
Entweder müssen Sie das Umbasieren/Zusammenführen lösen, oder Sie können das Löschen erzwingen, indem Sie
git branch -D my_branch
In Remote löschen:
git Push --delete Origin my_branch
kann dasselbe tun mit,
git Push Origin :my_branch # easy to remember both will do the same.
Grafische Darstellung,
--- (
Dies funktioniert nicht, wenn Sie ein Tag mit demselben Namen wie der Zweig auf der Fernbedienung haben:
$ git Push Origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to Push some refs to '[email protected]:SomeName/some-repo.git'
In diesem Fall müssen Sie angeben, dass Sie den Zweig löschen möchten, nicht das Tag:
git Push Origin :refs/heads/branch-or-tag-name
Um das Tag anstelle des Zweigs zu löschen, würden Sie auf ähnliche Weise Folgendes verwenden:
git Push Origin :refs/tags/branch-or-tag-name
Viele der anderen Antworten führen zu Fehlern/Warnungen. Dieser Ansatz ist relativ narrensicher, obwohl Sie möglicherweise noch git branch -D branch_to_delete
benötigen, wenn er beispielsweise nicht vollständig in some_other_branch
zusammengeführt wurde.
git checkout some_other_branch
git Push Origin :branch_to_delete
git branch -d branch_to_delete
Remote-Bereinigung ist nicht erforderlich, wenn Sie den Remote-Zweig gelöscht haben. Es wird nur verwendet, um die aktuellsten Fernbedienungen zu erhalten, die in einem von Ihnen verfolgten Repository verfügbar sind. Ich habe beobachtet, dass git fetch
Fernbedienungen hinzufügt, nicht entfernt. Hier ist ein Beispiel, wann git remote Prune Origin
tatsächlich etwas tun wird:
Benutzer A führt die obigen Schritte aus. Benutzer B würde die folgenden Befehle ausführen, um die aktuellsten Remote-Verzweigungen anzuzeigen
git fetch
git remote Prune Origin
git branch -r
Ich habe es satt, nach dieser Antwort zu googeln, also habe ich einen ähnlichen Ansatz gewählt wie die Antwort, die crizCraig gepostet hat früher.
Folgendes zu meinem Bash-Profil hinzugefügt:
function gitdelete(){
git Push Origin --delete $1
git branch -D $1
}
Jedes Mal, wenn ich mit einem Zweig fertig bin (zum Beispiel mit master
zusammengeführt), führe ich in meinem Terminal Folgendes aus:
gitdelete my-branch-name
... der dann my-branch-name
aus Origin
sowie lokal löscht.
Vor dem Ausführen
git branch --delete <branch>
stellen Sie zunächst sicher, dass Sie den EXAKTEN Namen der Remote-Verzweigung ermitteln, indem Sie Folgendes ausführen:
git ls-remote
Hier erfahren Sie, was Sie GENAU für den Wert <branch>
eingeben müssen. (branch
unterscheidet zwischen Groß- und Kleinschreibung!)
git Push Origin :bugfix # Deletes remote branch
git branch -d bugfix # Must delete local branch manually
Wenn Sie sicher sind, dass Sie es löschen möchten, führen Sie es aus
git branch -D bugfix
Nun werden zum Aufräumen gelöschte entfernte Nebenstellen ausgeführt
git remote Prune Origin
Mashup aller anderen Antworten. Benötigt Ruby 1.9.3+
, getestet nur unter OS X.
Rufen Sie diese Datei git-remove
auf, machen Sie sie ausführbar und speichern Sie sie in Ihrem Pfad. Verwenden Sie dann beispielsweise git remove temp
.
#!/usr/bin/env Ruby
require 'io/console'
if __FILE__ == $0
branch_name = ARGV[0] if (ARGV[0])
print "Press Y to force delete local and remote branch #{branch_name}..."
response = STDIN.getch
if ['Y', 'y', 'yes'].include?(response)
puts "\nContinuing."
`git branch -D #{branch_name}`
`git branch -D -r Origin/#{branch_name}`
`git Push Origin --delete #{branch_name}`
else
puts "\nQuitting."
end
end
Ich habe die folgenden Aliase zu meiner .gitconfig
-Datei hinzugefügt. Auf diese Weise kann ich Zweige mit oder ohne Angabe des Zweignamens löschen. Der Zweigname wird standardmäßig auf den aktuellen Zweig gesetzt, wenn kein Argument übergeben wird.
[alias]
branch-name = rev-parse --abbrev-ref HEAD
rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git Push Origin :$branch; }; f"
rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
Eine alternative Option zur Befehlszeile zum Löschen entfernter Verzweigungen ist die Seite GitHub-Verzweigungen .
Siehe zum Beispiel: https://github.com/angular/angular.js/branches
Gefunden auf der Seite Code
-> Branches
eines GitHub-Repositorys.
Ich bevorzuge im Allgemeinen die Befehlszeile selbst, aber diese GitHub-Seite zeigt Ihnen viele weitere Informationen zu den Zweigen, z. B. , die zuletzt aktualisiert wurden Datum und Benutzer und Anzahl der Commits vor und nach . Dies ist nützlich, wenn Sie mit einer großen Anzahl von Zweigen arbeiten.
Ich hatte auch ähnliche Probleme, und dies scheint zu funktionieren: Dadurch wird der lokale Zweig gelöscht. git branch -d the_local_branch
Dadurch wird der entfernte Zweig git Push Origin :the_remote_branch
entfernt.
Es gibt gute Antworten, aber für den Fall, dass Sie eine Menge Filialen haben, wäre es eine mühsame Aufgabe, sie einzeln lokal und remote zu löschen. Mit diesem Skript können Sie diese Aufgaben automatisieren.
branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
# delete prefix remotes/Origin/ from branch name
branch_name="$(awk '{gsub("remotes/Origin/", "");print}' <<< $branch)"
if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
# delete branch remotly and locally
git Push Origin :$branch_name
fi
done
Mit GitBash können Sie Folgendes ausführen:
git branch --delete <branch>
Wenn Sie den Zweig in der GitHub-Desktop-App ausgecheckt haben, können Sie den lokalen Zweig über die Menüleiste Zweig löschen :
Wenn Sie NICHT die GitHub-Desktop-App verwenden und ein IDE wie Visual Studio für Ihre lokale Quellcodeverwaltung verwenden, sind Sie alleine muss ein paar schnelle schritte machen:
Sobald Sie online in Ihrem GitHub-Konto angemeldet sind, gehen Sie zum Repository und klicken Sie auf die Registerkarte Alle Zweige. Klicken Sie dort einfach auf das kleine Mülleimersymbol rechts neben dem Namen des Brachs, den Sie löschen möchten.
* Beachten Sie: Wenn der Zweig nicht veröffentlicht ist, müssen Sie ihn nicht aus Ihrem Online-Repository löschen.
Ich habe die folgende praktische Funktion in meiner .bash_aliases-Datei erstellt:
git-delete-branch()
{
if [[ -n $1 ]]; then
git checkout master > /dev/null;
branch_name="$1";
echo "Deleting local $branch_name branch...";
git branch -D "$branch_name";
echo "Deleting remote $branch_name branch...";
git Push Origin --delete "$branch_name";
git remote Prune Origin;
echo "Your current branches are:";
git branch -a;
else
echo "Usage: git-delete-branch <branch_name>";
fi
}
Laut aktuellem Dokument mit Terminal können wir folgenden Weg löschen.
in local löschen:
git branch -D usermanagement
am entfernten Ort löschen:
git Push --delete Origin usermanagement
Es ist sehr einfach
m den entfernten Zweig zu löschen
git Push -d Origin <branch-name>
OR
git Push Origin :<branch-name>
Lokalen Zweig löschen
git branch -D <branch-name>