Ik wil een vertakking zowel lokaal als op afstand verwijderen.
Mislukte pogingen om een externe vertakking te verwijderen
$ 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.
Wat moet ik anders doen om de vertakking remotes/origin/bugfix
zowel lokaal als op afstand succesvol te verwijderen?
Antwoord 1, autoriteit 100%
Samenvatting
$ git push -d <remote_name> <branch_name> $ git branch -d <branch_name>
Merk op dat in de meeste gevallen de naam van de afstandsbediening
origin
is. In zo’n geval
je moet het commando zo gebruiken.$ git push -d origin <branch_name>
Lokale vestiging verwijderen
Gebruik een van de volgende opties om de lokale-tak te verwijderen:
$ git branch -d branch_name
$ git branch -D branch_name
Opmerking: De optie -D
is een alias voor --delete
, die de vertakking alleen verwijdert als deze al volledig is samengevoegd in zijn stroomopwaartse tak. Je zou ook -D
kunnen gebruiken, wat een alias is voor --delete --force
, die de branch verwijdert "ongeacht zijn samengevoegde status" [Bron: man git-branch
]
Merk ook op dat git branch -d branch_name
zal mislukken als je momenteel bent
in de tak die u wilt verwijderen. Het bericht begint met
error: Cannot delete the branch 'branch_name'
niet verwijderen. Zo ja, eerst overstappen
naar een andere branch, bijvoorbeeld: git checkout main
.
Verwijder vertakking [bijgewerkt op 8-sep-2017]
Vanaf Git v1.7.0 , kunt u een externe branch verwijderen met
$ git push <remote_name> --delete <branch_name>
wat misschien makkelijker te onthouden is dan
$ git push <remote_name> :<branch_name>
die is toegevoegd in Git v1.5.0 "om een remote branch of een tag te verwijderen."
Vanaf Git v2.8.0 je kunt ook git push
gebruiken met de -D
optie als een alias voor --delete
.
Daarom bepaalt de versie van Git die je hebt geïnstalleerd of je de gemakkelijkere of moeilijkere syntaxis moet gebruiken.
Verwijder vertakking [Oorspronkelijke antwoord van 5-jan-2010]
Uit hoofdstuk 3 van Pro Git door Scott Chacon:
Externe vertakkingen verwijderen
Stel dat je klaar bent met een remote branch – zeg, jij en je medewerkers zijn klaar met een feature en hebben het samengevoegd in de main branch van je remote (of welke branch je stabiele coderegel ook is). Je kunt een remote branch verwijderen met behulp van de nogal stompe syntax
git push [remotename] :[branch]
. Als je je server-fix branch van de server wilt verwijderen, voer je het volgende uit:
$ git push origin :serverfix
To [email protected]:schacon/simplegit.git
- [deleted] serverfix
Boem. Geen branches meer op uw server. Misschien wil je deze pagina eens goed luisteren, want je hebt dat commando nodig en je zult waarschijnlijk de syntaxis vergeten. Een manier om dit commando te onthouden is door de syntaxis
git push [remotename] [localbranch]:[remotebranch]
op te roepen die we iets eerder hebben besproken. Als je het gedeelte[localbranch]
weglaat, zeg je eigenlijk: Neem niets aan mijn kant en maak het[remotebranch]
.
Ik heb git push origin: bugfix
uitgegeven en het werkte prachtig. Scott Chacon had gelijk. Ik wil ezelsoren die pagina (of virtueel ezelsoren door beantwoord dit op Stack Overflow).
Dan moet u dit op andere machines uitvoeren
# Fetch changes from all remotes and locally delete
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune
om wijzigingen door te voeren.
Antwoord 2, autoriteit 15%
Matthews antwoord is geweldig voor het verwijderen van externe vertakkingen en ik waardeer de uitleg ook, maar om een eenvoudig onderscheid te maken tussen de twee commando’s:
Een lokale vestiging van uw computer verwijderen:
git branch -d {the_local_branch}
(gebruik in plaats daarvan -D
om het verwijderen van de branch te forceren zonder de samengevoegde status te controleren)
Een externe vertakking van de server verwijderen:
git push origin --delete {the_remote_branch}
Referentie: Git: Verwijder een vertakking (lokaal of op afstand)
Antwoord 3, autoriteit 10%
De korte antwoorden
Als je meer gedetailleerde uitleg wilt over de volgende commando’s, bekijk dan de lange antwoorden in het volgende gedeelte.
Een vertakking op afstand verwijderen
git push origin --delete <branch> # Git version 1.7.0 or newer
git push origin -d <branch> # Shorter version (Git 1.7.0 or newer)
git push origin :<branch> # Git versions older than 1.7.0
Een lokale vestiging verwijderen
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches
Een lokale vertakking voor het volgen op afstand verwijderen
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p # Shorter
Het lange antwoord: er zijn drie verschillende takken om te verwijderen!
Als je te maken hebt met het verwijderen van vertakkingen, zowel lokaal als op afstand, houd er dan rekening mee dat er drie verschillende vertakkingen bij betrokken zijn:
- De lokale vestiging
X
. - De remote origin branch
X
. - De lokale remote-tracking branch
origin/X
die de remote branchX
volgt.
De gebruikte originele poster:
git branch -rd origin/bugfix
Die alleen zijn lokale remote-tracking branch origin/bugfix
verwijderde, en niet de daadwerkelijke remote branch bugfix
op origin
.
Om die werkelijke externe tak te verwijderen, moet je
git push origin --delete bugfix
Aanvullende details
De volgende secties beschrijven aanvullende details waarmee u rekening moet houden bij het verwijderen van uw remote en remote-tracking vertakkingen.
Duwen om vertakkingen op afstand te verwijderen, verwijdert ook vertakkingen die op afstand worden gevolgd
Merk op dat het verwijderen van de remote branch X
van de opdrachtregel met behulp van een git push
ook de lokale remote-tracking branch zal verwijderen origin/X
, dus het is niet nodig om de verouderde remote-tracking branch te snoeien met git fetch --prune
of git fetch -p
. Het zou echter geen kwaad kunnen als je het toch zou doen.
Je kunt controleren of de remote-tracking branch origin/X
ook is verwijderd door het volgende uit te voeren:
# 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
De verouderde lokale remote-tracking branch origin/X snoeien
Als je je remote branch X
niet hebt verwijderd van de opdrachtregel (zoals hierboven), dan zal je lokale repository nog steeds (een nu verouderde) remote-tracking branch origin/X
. Dit kan gebeuren als je bijvoorbeeld een remote branch rechtstreeks via de webinterface van GitHub hebt verwijderd.
Een typische manier om deze verouderde remote-tracking branches te verwijderen (sinds Git versie 1.6.6) is door simpelweg git fetch
uit te voeren met de --prune
of kortere -p
. Merk op dat hiermee alle verouderde lokale traceringsvertakkingen op afstand worden verwijderd voor externe vertakkingen die niet langer op de externe locatie bestaan:
git fetch origin --prune
git fetch origin -p # Shorter
Hier is het relevante citaat uit de 1.6.6 release-opmerkingen (nadruk van mij):
“git fetch” leerde
--all
en--multiple
opties om fetch uit te voeren van
veel opslagplaatsen en de optie--prune
om tracking op afstand te verwijderen
branches die oud zijn geworden. Deze maken “git remote update” en “git
remote snoeien” minder nodig (er is geen plan om “remote
update” noch “snoeien op afstand”).
Alternatief voor automatisch snoeien hierboven voor verouderde takken die op afstand worden gevolgd
Als alternatief, in plaats van je verouderde lokale remote-tracking branches te snoeien via git fetch -p
, kunt u voorkomen dat u de extra netwerkbewerking uitvoert door gewoon handmatig de branch te verwijderen( es) met de vlaggen --remote
of -r
:
git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter
Zie ook
- git-branch(1) handmatige pagina.
- git-fetch(1) handmatige pagina.
- Pro Git § 3.5 Git-vertakkingen – Externe vertakkingen.
Antwoord 4, autoriteit 7%
Stappen voor het verwijderen van een vertakking:
Voor het verwijderen van de externe tak:
git push origin --delete <your_branch>
Voor het verwijderen van de lokale vestiging heeft u drie manieren:
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
Leg uit: OK, leg gewoon uit wat hier aan de hand is!
Doe gewoon git push origin --delete
om uw remote branch alleen te verwijderen, voeg de naam van de branch aan het einde toe en dit zal verwijderen en tegelijkertijd duwen naar afstandsbediening…
Ook git branch -D
, die eenvoudig de lokale branch alleen verwijdert!…
-D
staat voor --delete --force
die de branch zal verwijderen, zelfs als deze niet is samengevoegd (geforceerd verwijderen), maar je kunt ook -D
wat staat voor --delete
wat een foutmelding geeft van respectievelijk de branch merge status…
Ik maak ook de afbeelding hieronder om de stappen weer te geven:
Antwoord 5, autoriteit 4%
U kunt ook het volgende gebruiken om de externe tak te verwijderen
git push --delete origin serverfix
Wat hetzelfde doet als
git push origin :serverfix
maar het is misschien makkelijker te onthouden.
Antwoord 6, autoriteit 2%
Tip: Wanneer u vertakkingen verwijdert met
git branch -d <branchname> # Deletes local branch
of
git push origin :<branchname> # Deletes remote branch
alleen de referenties worden verwijderd. Ook al is de branch daadwerkelijk verwijderd op de remote, de verwijzingen ernaar bestaan nog steeds in de lokale repositories van je teamleden. Dit betekent dat voor andere teamleden de verwijderde branches nog steeds zichtbaar zijn wanneer ze een git branch -a
doen.
Om dit op te lossen, kunnen uw teamleden de verwijderde takken snoeien met
git remote prune <repository>
Dit is typisch git remote prune origin
.
Antwoord 7, autoriteit 2%
Als u een filiaal wilt verwijderen, moet u eerst afrekenen bij het filiaal dat niet het te verwijderen filiaal is.
git checkout other_than_branch_to_be_deleted
De lokale vestiging verwijderen:
git branch -D branch_to_be_deleted
De vertakking op afstand verwijderen:
git push origin --delete branch_to_be_deleted
Antwoord 8, autoriteit 2%
Het is heel eenvoudig:
De externe tak verwijderen
git push -d origin <branch-name>
Of
git push origin :<branch-name>
— U kunt ook tags met deze syntaxis verwijderen
Lokale vestiging met geweld verwijderen
git branch -D <branch-name>
Opmerking: voer een git fetch --all --prune
uit op andere machines na het verwijderen van externe vertakkingen, om verouderde volgvertakkingen te verwijderen.
Voorbeeld
om de lokale vestiging te verwijderen
git branch -D my-local-branch
om een vertakking op afstand te verwijderen
git push origin :my-remote-branch
Veel plezier met coderen 🙂
Antwoord 9
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>
Antwoord 10
Dit is eenvoudig: voer gewoon de volgende opdracht uit:
Om een Git branch zowel lokaal als op afstand te verwijderen, verwijder eerst de lokale branch met dit commando:
git branch -d example
(Hier example
is de naam van het filiaal.)
En verwijder daarna de remote branch met dit commando:
git push origin :example
Antwoord 11
Een andere benadering is:
git push --prune origin
WAARSCHUWING: Hiermee worden alle externe vertakkingen verwijderd die niet lokaal bestaan. Of meer uitgebreid,
git push --mirror
zal de externe repository er effectief uit laten zien als de lokale kopie van de repository (lokale heads, remotes en tags worden gespiegeld op remote).
Antwoord 12
Ik gebruik het volgende in mijn Bash-instellingen:
alias git-shoot="git push origin --delete"
Dan kun je bellen:
git-shoot branchname
Antwoord 13
Lokaal verwijderen:
Om een lokale vestiging te verwijderen, kunt u het volgende gebruiken:
git branch -D <branch_name>
Gebruik -D
in plaats van -D
om een vertakking met geweld te verwijderen.
git branch -D <branch_name>
Op afstand verwijderen:
Er zijn twee opties:
git push origin :branchname
git push origin --delete branchname
Ik raad je aan de tweede manier te gebruiken, omdat deze intuïtiever is.
Antwoord 14
Als je beide stappen met één opdracht wilt voltooien, kun je er een alias voor maken door het onderstaande toe te voegen aan je ~/.gitconfig
:
[alias]
rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"
Als alternatief kunt u dit vanaf de opdrachtregel aan uw algemene configuratie toevoegen met
git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'
OPMERKING: Als u -D
(kleine letter d) gebruikt, wordt de vertakking alleen verwijderd als deze is samengevoegd. Om het verwijderen te forceren, moet u -D
(hoofdletter D) gebruiken.
Antwoord 15
Sinds januari 2013 heeft GitHub een knop Verwijder vertakking toegevoegd naast elke vertakking op uw “Vertakkingen”-pagina.
Relevante blogpost: Vertakkingen maken en verwijderen
Antwoord 16
Om uw filiaal lokaal en op afstand te verwijderen
-
Afrekenen naar master branch –
git checkout master
-
Verwijder je remote branch –
git push origin --delete <branch-name>
-
Verwijder je lokale vestiging –
git branch --delete <branch-name>
Antwoord 17
Je kunt dit ook doen met git remote prune origin
$ git remote prune origin
Pruning origin
URL: [email protected]/yourrepo.git
* [pruned] origin/some-branchs
Het snoeit en verwijdert remote-tracking branches uit een git branch -r
lijst.
Antwoord 18
Naast de andere antwoorden, gebruik ik vaak de tool git_remote_branch. Het is een extra installatie, maar het geeft je een handige manier om te communiceren met externe branches. In dit geval, om te verwijderen:
grb delete branch
Ik merk dat ik de commando’s publish
en track
ook vrij vaak gebruik.
Antwoord 19
Een one-liner-opdracht om zowel lokaal als extern te verwijderen:
D=branch-name; git branch -D $D; git push origin :$D
Of voeg de onderstaande alias toe aan uw ~/.gitconfig. Gebruik: git kill branch-name
[alias]
kill = "!f(){ git branch -D \"$1\"; git push origin --delete \"$1\"; };f"
Antwoord 20
Laten we aannemen dat ons werk op het filiaal "contactformulier" is klaar en we hebben het al geïntegreerd in "master". Omdat we het niet meer nodig hebben, kunnen we het (lokaal) verwijderen:
$ git branch -d contact-form
En voor het verwijderen van de vertakking op afstand:
git push origin --delete contact-form
Antwoord 21
Verwijder vertakking
git push origin :<branchname>
Lokale vestiging verwijderen
git branch -D <branchname>
Verwijder lokale vestigingsstappen:
- afrekenen naar een ander filiaal
- verwijder lokale vestiging
Antwoord 22
Zeg gewoon:
git branch -d <branch-name>
git push origin :<branch-name>
Antwoord 23
git push origin --delete <branch Name>
is makkelijker te onthouden dan
git push origin :branchName
Antwoord 24
Om lokaal te verwijderen – (normaal)
git branch -d my_branch
Als je branch bezig is met rebasen/samenvoegen en dat niet goed is gedaan, betekent dit dat je een foutmelding krijgt, Rebase/Merge in progress
, dus in dat geval zul je niet uw filiaal kunnen verwijderen.
Dus ofwel moet je het rebasen/samenvoegen oplossen. Anders kunt u verwijderen forceren met,
git branch -d my_branch
Om op afstand te verwijderen:
git push --delete origin my_branch
U kunt hetzelfde doen met:
git push origin :my_branch # Easy to remember both will do the same.
Grafische weergave:
Antwoord 25
Je kunt het nu doen met de GitHub Desktop-applicatie.
Na het starten van de applicatie
- Klik op het project dat de tak bevat
-
Schakel over naar de tak die u wilt verwijderen
-
Selecteer in het menu “Branch” “Unpublish…” om de branch van de GitHub-servers te laten verwijderen.
-
Selecteer in het “Branch”-menu, ‘Verwijder “branch_name“…’, om de vertakking te verwijderen van uw lokale computer (ook bekend als de computer waarop u momenteel werkt aan)
Antwoord 26
Dit werkt niet als je een tag hebt met dezelfde naam als de branch op de afstandsbediening:
$ 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 dat geval moet je specificeren dat je de branch wilt verwijderen, niet de tag:
git push origin :refs/heads/branch-or-tag-name
Op dezelfde manier, om de tag te verwijderen in plaats van de branch die je zou gebruiken:
git push origin :refs/tags/branch-or-tag-name
Antwoord 27
Veel van de andere antwoorden leiden tot fouten/waarschuwingen. Deze aanpak is relatief onfeilbaar, hoewel je misschien nog steeds git branch -D branch_to_delete
nodig hebt als het bijvoorbeeld niet volledig is samengevoegd in some_other_branch
.
git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete
Remote snoeien is niet nodig als je de remote branch hebt verwijderd. Het wordt alleen gebruikt om de meest up-to-date afstandsbedieningen te krijgen die beschikbaar zijn in een repository die u bijhoudt. Ik heb gezien dat git fetch
afstandsbedieningen zal toevoegen, niet verwijderen. Hier is een voorbeeld van wanneer git remote prune origin
daadwerkelijk iets zal doen:
Gebruiker A voert de bovenstaande stappen uit. Gebruiker B zou de volgende commando’s uitvoeren om de meest up-to-date remote branches te zien:
git fetch
git remote prune origin
git branch -r
Antwoord 28
Ik werd het googelen voor dit antwoord beu, dus ik nam een vergelijkbare benadering van het antwoord dat crizCraig eerder plaatste.
Ik heb het volgende toegevoegd aan mijn Bash-profiel:
function gitdelete(){
git push origin --delete $1
git branch -D $1
}
Elke keer als ik klaar ben met een branch (bijvoorbeeld samengevoegd in master
), voer ik het volgende uit in mijn terminal:
gitdelete my-branch-name
…die vervolgens my-branch-name
verwijdert uit origin
en ook lokaal.
Antwoord 29
Voor het uitvoeren
git branch --delete <branch>
zorg ervoor dat je eerst bepaalt wat de exacte naam is van de remote branch door het volgende uit te voeren:
git ls-remote
Dit zal u vertellen wat u exact moet invoeren voor <branch>
waarde. (branch
is hoofdlettergevoelig!)
Antwoord 30
Gebruik:
git push origin :bugfix # Deletes remote branch
git branch -d bugfix # Must delete local branch manually
Als je zeker weet dat je het wilt verwijderen, voer je uit
git branch -D bugfix
Nu om verwijderde remote branches op te schonen
git remote prune origin