Hoe verwijder ik een Git branch lokaal en op afstand?

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:

  1. De lokale vestiging X.
  2. De remote origin branch X.
  3. De lokale remote-tracking branch origin/X die de remote branch X volgt.

Visualisatie van drie takken

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.

Diagram 2

Om die werkelijke externe tak te verwijderen, moet je

git push origin --delete bugfix

Diagram 3

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 --multipleopties 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

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:

Verwijder een externe en lokale vestiging in git

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

Vertakkingen verwijderen

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:

  1. afrekenen naar een ander filiaal
  2. 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:

Voer hier de afbeeldingsbeschrijving in

Antwoord 25

Je kunt het nu doen met de GitHub Desktop-applicatie.

Na het starten van de applicatie

  1. Klik op het project dat de tak bevat
  2. Schakel over naar de tak die u wilt verwijderen

    Van tak wisselen

  3. Selecteer in het menu “Branch” “Unpublish…” om de branch van de GitHub-servers te laten verwijderen.

    Vertakking depubliceren

  4. 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)

    Verwijder lokale vestiging

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

13 + eight =

Other episodes