Vraag Hoe verwijder ik een Git-filiaal zowel lokaal als op afstand?


Ik wil een filiaal zowel lokaal als op mijn externe projectvork verwijderen GitHub.

Mislukte pogingen om Remote Branch 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. Succesvol te verwijderen remotes/origin/bugfix branch zowel lokaal als op GitHub?


13818
2018-01-05 01:12


oorsprong


antwoorden:


Managementsamenvatting

$ git push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>

Merk op dat in de meeste gevallen de naam op afstand is origin.

Lokale vertakking verwijderen

Om de te verwijderen lokaal branch gebruik een van de volgende:

$ git branch -d branch_name
$ git branch -D branch_name

Notitie: De -d optie is een alias voor --delete, die alleen de vertakking verwijdert als deze al volledig is samengevoegd in zijn stroomopwaartse tak. Je zou ook kunnen gebruiken -D, dat is een alias voor --delete --force, die de vertakking verwijdert "ongeacht de samengevoegde status." [Bron: man git-branch]

Remote Branch verwijderen [bijgewerkt op 8-sep-2017]

Vanaf Git v1.7.0, je kunt een verwijderen afgelegen filiaal gebruiken

$ 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 kan ook gebruiken git push met de -d optie als een alias voor --delete.

Daarom bepaalt de versie van Git die je hebt geïnstalleerd of je de eenvoudigere of hardere syntaxis moet gebruiken.

Delete Remote Branch [Oorspronkelijk antwoord van 5 januari 2010]

Uit hoofdstuk 3 van Pro Git door Scott Chacon:

Remote Branches verwijderen

Stel dat u klaar bent met een externe vestiging - bijvoorbeeld, u en uw medewerkers hebben een functie voltooid en zijn samengevoegd in de mastertak van uw afstandsbediening (of in welke vertakking uw stabiele codeline zich bevindt). U kunt een externe branch verwijderen met behulp van de nogal stompe syntaxis git push [remotename] :[branch]. Als u uw serverfixfiliaal van de server wilt verwijderen, voert u het volgende uit:

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

Boom. Geen vertakking meer op uw server. Misschien wilt u deze pagina volgen, omdat u die opdracht nodig heeft en waarschijnlijk de syntaxis vergeet. Een manier om dit commando te onthouden is door het git push [remotename] [localbranch]:[remotebranch] syntaxis die we een beetje eerder hebben besproken. Als je de [localbranch] gedeelte, dan zeg je eigenlijk: "Neem niets mee aan mijn kant en maak het waar [remotebranch].”

Ik heb uitgegeven git push origin :bugfix en het werkte prachtig. Scott Chacon had gelijk, ik zal het willen hond oor die pagina (of virtueel hondoor door dit te beantwoorden op Stack Overflow).

Dan zou u dit op andere machines moeten uitvoeren

git fetch --all --prune

om veranderingen te verspreiden.


17189
2018-01-05 01:13



Het antwoord van Matthew is geweldig om te verwijderen afgelegen branches en ik waardeer ook de uitleg, maar maak een eenvoudig onderscheid tussen de twee commando's:

Verwijderen van een lokale tak vanaf uw machine:

git branch -d {the_local_branch} (gebruik -D in plaats daarvan om het verwijderen van het filiaal te forceren zonder de samengevoegde status te controleren)

Verwijderen van een externe tak van de server:

git push origin --delete {the_remote_branch}

Referentie: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


2867
2018-06-12 14:51



De korte antwoorden

Als u meer gedetailleerde uitleg wilt van de volgende opdrachten, bekijk dan de lange antwoorden in het volgende gedeelte.

Een extern filiaal verwijderen:

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin :<branch>          # Git versions older than 1.7.0

Een lokaal filiaal verwijderen:

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches

Een lokale remote tracking-tak verwijderen:

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

Het lange antwoord: er zijn 3 verschillende takken om te verwijderen!

Wanneer u te maken hebt met het lokaal en op afstand verwijderen van branches, houd daar dan rekening mee er zijn 3 verschillende takken bij betrokken:

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

Visualization of 3 branches

De originele gebruikte poster

git branch -rd origin/bugfix

die alleen de zijne heeft verwijderd lokale remote tracking-afdeling  origin/bugfix, en niet de eigenlijke remote branch bugfix op origin.

Diagram 2

Om die echte externe filiaal te verwijderen, jij hebt nodig

git push origin --delete bugfix

Diagram 3

Overige gegevens

In de volgende secties worden aanvullende details beschreven die u moet overwegen bij het verwijderen van uw remote en remote tracking-takken.

Door te duwen om remote branches te verwijderen, worden ook remote tracking-takken verwijderd

Merk op dat het verwijderen van de externe filiaal X vanaf de opdrachtregel met behulp van a git push  zal ook de lokale remote tracking-tak verwijderen  origin/X, dus het is niet nodig om de verouderde remote tracking-tak te snoeien met git fetch --prune of git fetch -phoewel het geen kwaad zou doen als je het toch deed.

U kunt controleren of de tak voor remote tracking origin/X is ook 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

Snoeien van de verouderde lokale oorsprong van de remote-trackingtak / X

Als u uw externe filiaal niet hebt verwijderd X vanaf de opdrachtregel (zoals hierboven), dan bevat uw lokale repo nog steeds (een nu verouderd) filiaal op afstand origin/X. Dit kan gebeuren als u bijvoorbeeld een externe filiaal rechtstreeks via de webinterface van GitHub hebt verwijderd.

Een typische manier om deze verouderde remote tracking-takken (sinds Git versie 1.6.6) te verwijderen, is om gewoon te draaien git fetch met de --prune of korter -p. Merk op dat hiermee alle verouderde lokale remote tracking-takken worden verwijderd voor externe filialen die niet meer op de afstandsbediening voorkomen:

git fetch origin --prune
git fetch origin -p # Shorter

Hier is de relevante quote van de 1.6.6 release-opmerkingen (nadruk van mij):

"git fetch" geleerd  --all en --multipleopties om uit te voeren vanaf   veel opslagplaatsen, en --prune optie om remote tracking te verwijderen   takken die oud werden.  Deze maken "git remote update" en "git   remote snoeien "minder noodzakelijk (er is geen verwijderingsplan") op afstand   update "noch" remote snoeien ", hoewel).

Alternatief voor automatisch snoeien hierboven voor verouderde remote-tracking-takken

Als alternatief, in plaats van het doorsnijden van uw verouderde lokale remote tracking-afdelingen git fetch -p, u kunt voorkomen dat u extra netwerkbewerkingen uitvoert door de tak (ken) handmatig te verwijderen met de --remote of -r vlaggen:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

Zie ook


1640
2018-05-30 18:32



Stappen voor het verwijderen van een filiaal:

voor het verwijderen van de externe tak:

git push origin --delete <your_branch> 

voor het verwijderen van de lokale tak, je hebt 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 gebeurt!

Gewoon doen git push origin --delete naar verwijder ALLEEN uw remote branch, voeg de naam van het filiaal aan het einde toe en dit wordt verwijderd en tegelijkertijd naar de afstandsbediening geduwd ...

Ook, git branch -D, die gewoon de lokale vestiging verwijderen ENKEL EN ALLEEN! ...

-D betekent --delete --force die de tak verwijdert, zelfs als deze niet is samengevoegd (force delete), maar u kunt ook gebruiken -d wat staat voor --delete waarbij een fout wordt gegenereerd van de status van de samenvoegstatus ...

Ik maak ook de onderstaande afbeelding om de stappen te tonen:

delete a remote and local branch in git


922
2018-06-27 13:13



U kunt ook het volgende gebruiken om de remote branch te verwijderen.

git push --delete origin serverfix

Wat hetzelfde doet als

git push origin :serverfix

maar het is misschien makkelijker om te onthouden.


703
2017-10-27 22:22



Als u een filiaal wilt verwijderen, moet u eerst uitchecken naar het filiaal, behalve het filiaal dat moet worden verwijderd.

git checkout other_than_branch_to_be_deleted

Het lokale filiaal verwijderen:

git branch -D branch_to_be_deleted

Het externe filiaal verwijderen:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52



Tip: wanneer u takken verwijdert met

git branch -d <branchname>    # deletes local branch

of

git push origin :<branchname> # deletes remote branch

alleen de referenties worden verwijderd. Hoewel de branch feitelijk op de remote is verwijderd, bestaan ​​de verwijzingen ernaar nog steeds in de lokale repositories van uw teamleden. Dit betekent dat voor andere teamleden de verwijderde takken nog steeds zichtbaar zijn wanneer ze a doen git branch -a.

Om dit op te lossen kunnen uw teamleden de verwijderde takken snoeien met

git remote prune <repository>

Dit is typisch git remote prune origin.


329
2017-11-07 13:02



git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

247
2017-10-24 17:36



Dit is eenvoudig: voer gewoon de volgende opdracht uit:

Om een ​​Git-branch zowel op afstand als op afstand te verwijderen, verwijdert u eerst de lokale vertakking met de volgende opdracht:

git branch -d example

(hier example is de filenaam)

En verwijder daarna de remote branch met behulp van de opdracht:

git push origin :example

212
2018-02-15 15:20



Een andere benadering is

git push --prune origin

WAARSCHUWING:  Hiermee worden alle externe takken verwijderd die niet lokaal bestaan. Of meer volledig,

git push --mirror

zorgt ervoor dat de externe repository eruitziet als de lokale kopie van de repository (lokale hoofden, afstandsbedieningen en tags worden gespiegeld op de afstandsbediening).


178
2017-11-18 06:11