Git

Sådan slettes en Git-gren

Sådan slettes en Git-gren
Det er nemt at oprette grene i Git. Det betragtes som en af ​​Gits bedste funktioner. På grund af tilstedeværelsen af ​​eksterne og lokale opbevaringssteder kan det imidlertid være lidt forvirrende at slette grene.

I denne lektion vil vi gøre følgende:

Lektionen skal give dig en samlet forståelse af filialens oprettelse og sletning, så du har en god kommando over de nødvendige trin, når du har brug for at slette en lokal eller ekstern filial.

Lad os komme igang.

1. Oprettelse af et eksternt lager

Lad os oprette en mappe kaldet projekt.git og initialiser for at være det eksterne lager:

$ mkdir-projekt.git
$ cd-projekt.git
$ git init -bare

Initialiseret tomt Git-arkiv i / Brugere / zak / _work / LearnGIT / git_delete_branch / projekt.git /

2. Oprettelse af en lokal kopi af Remote Repository

På en ny placering, lad os oprette en lokal kopi kaldet project_local af det eksterne lager ved hjælp af klonkommandoen.

Bemærk: Hvis du arbejder med GitHub eller BitBucket, følger du den samme proces for at klone lageret. I så fald har du et SSH-link i stedet for den fulde filsti, der bruges her.

$ git klon / Brugere / zak / _work / LearnGIT / git_delete_branch / projekt.git projekt_lokal
Kloning til 'project_local' ..
advarsel: Det ser ud til, at du har klonet et tomt lager.
Færdig.

3. Oprettelse af grene inde i den lokale kopi

Lad os først tilføje en fil til den lokale kopi og derefter skubbe den til det eksterne lager:

$ cd projektlokal
 
$ tryk på ReadMe.txt
 
$ git add -A
 
$ git commit -m "Initialisering af modulet"
 
[master (root-commit) 81eb2a3] Initialisering af modulet
1 fil ændret, 0 indsættelser (+), 0 sletninger (-)
Opret tilstand 100644 ReadMe.txt
 
$ git push oprindelsesmester
 
Optælling af objekter: 3, færdig.
Skriveobjekter: 100% (3/3), 221 bytes | 0 byte / s, færdig.
I alt 3 (delta 0), genbrugt 0 (delta 0)
Til / Brugere / zak / _work / LearnGIT / git_delete_branch / projekt.git
* [ny gren] master -> master

I ovenstående kommandoer oprettede vi en fil, der hedder ReadMe.txt, tilføjede den til den lokale kopi, forpligtede den til den lokale kopi og skubbede derefter ændringerne til fjernopbevaringsstedet eller oprindelsens hovedfilial.

Hvis du tjekker filialerne, ser du mastergrenen i den lokale kopi:

$ git gren
* mester

Hvis du tjekker fjerntliggende grene, vil du også se mastergrenen der:

$ git gren -r
oprindelse / mester

Tip: Du kan bruge indstillingen '-a' til at se alle filialer i lokale og eksterne arkiver sammen.

$ git gren -a
* mester
fjernbetjeninger / oprindelse / master

Lad os oprette to grene kaldet b1 og b2 fra mastergrenen:

$ git gren b1
$ git gren b2

Lad os kontrollere, om grenene blev oprettet:

$ git gren
 
b1
b2
* mester

Nu skal vi foretage nogle ændringer i filialerne:

$ git checkout b1
 
Skiftet til gren 'b1'
 
$ touch gren1.txt
 
$ git add -A
 
$ git commit -m "Branch1-modifikation"
 
[b1 a2f488e] Gren1-ændring
1 fil ændret, 0 indsættelser (+), 0 sletninger (-)
Opret tilstand 100644 gren1.txt
 
$ git checkout b2
 
Skiftet til gren 'b2'
 
$ touch gren2.txt
 
$ git add -A
 
$ git commit -m "Branch2-modifikation"
 
[b2 2abb723] Branch2-ændring
1 fil ændret, 0 indsættelser (+), 0 sletninger (-)
Opret tilstand 100644 gren2.txt

Lad os kontrollere lokale og eksterne grenstatus:

$ git gren
 
b1
* b2
mestre
 
$ git gren -r
 
oprindelse / mester

Vi kan se lokalt, at vi har tre grene master, b1 og b2. Men vi har kun mastergrenen i fjernlageret.

4. At skubbe filialer til Remote Repository

Lad os skubbe b1-grenen til fjernlageret:

$ git push oprindelse b1
 
Optælling af objekter: 2, færdig.
Delta-kompression ved hjælp af op til 4 tråde.
Komprimerende objekter: 100% (2/2), færdig.
Skriveobjekter: 100% (2/2), 249 byte | 0 byte / s, færdig.
I alt 2 (delta 0), genbrugt 0 (delta 0)
Til / Brugere / zakh / _work / LearnGIT / git_delete_branch / projekt.git
* [ny gren] b1 -> b1

Du kan kontrollere de lokale og eksterne filialstatus:

$ git gren
 
b1
* b2
mestre
 
$ git gren -r
 
oprindelse / b1
oprindelse / mester

Fra ovenstående grenstatus kan vi se, at b1-grenen også er tilgængelig eksternt.

5. Sletning af filialer lokalt

Du kan slette grene lokalt med indstillingen -d eller -D.

git gren -d

Lad os først tjekke ind i hovedgrenen, så vi kan slette grenene b1 og b2.

$ git checkout master
 
Skiftet til gren 'master'
Din filial er opdateret med 'oprindelse / mester'.

Lad os prøve indstillingen -d først for at slette grenen b1:

$ git gren -d b1
 
fejl: Filialen 'b1' er ikke fuldt sammen.
Hvis du er sikker på, at du vil slette det, skal du køre 'git branch -D b1'.

Fejlen fortæller dig, at du skal flette ændringerne fra gren b1. Dette er en beskyttelsesforanstaltning, så du ikke fejlagtigt mister dit arbejde på grene. Du kan bruge indstillingen -D til at tvinge sletning af fusionen. Men i dette tilfælde, lad os fusionere ændringerne fra b1 og b2 til master og skubbe det til det eksterne lager.

$ git fusion b1
 
Opdaterer 81eb2a3 ... a2f488e
Spol frem
gren1.txt | 0
1 fil ændret, 0 indsættelser (+), 0 sletninger (-)
Opret tilstand 100644 gren1.txt
 
$ git fusion b2
 
Fletning foretaget af den 'rekursive' strategi.
gren2.txt | 0
1 fil ændret, 0 indsættelser (+), 0 sletninger (-)
Opret tilstand 100644 gren2.txt
 
$ git push oprindelsesmester
 
Optælling af objekter: 4, færdig.
Delta-kompression ved hjælp af op til 4 tråde.
Komprimerende objekter: 100% (4/4), færdig.
Skriveobjekter: 100% (4/4), 454 bytes | 0 byte / s, færdig.
I alt 4 (delta 1), genbrugt 0 (delta 0)
Til / Brugere / zak / _work / LearnGIT / git_delete_branch / projekt.git
81eb2a3… 34db496 master -> master

Prøv nu at slette grenene igen:

$ git gren
 
b1
b2
* mester
 
$ git gren -d b1
 
Slettet gren b1 (var a2f488e).
 
$ git gren -d b2
 
Slettet gren b2 (var 2abb723).
 
$ git gren
 
* mester

Du har slettet grenene b1 og b2 lokalt.

6. Sletning af eksterne grene

Når du tjekker fjerntliggende grene, ser du stadig b1 til stede:

$ git gren -r
 
oprindelse / b1
oprindelse / mester

Du kan bruge følgende kommando til at slette en ekstern gren:

git push --slet

Så du kan slette den eksterne b1-gren med følgende:

$ git push-oprindelse - slet b1
 
Til / Brugere / zakh_eecs / _work / LearnGIT / git_delete_branch / projekt.git
- [slettet] b1

Hvis du nu tjekker dine fjerntliggende grene, skal du ikke se b1 længere:

$ git gren -r
 
oprindelse / mester

Tillykke! Du har med succes slettet alle de grene, du oprettede. Øv dig på at lave flere grene og slette dem for at mestre Git-grænsesletningsprocessen.

Yderligere studier:

  • https: // git-scm.com / book / da / v1 / Git-Branching-What-a-Branch-Is
  • https: // git-scm.com / book / da / v2 / Git-Branching-Branches-in-a-Nutshell
  • https: // git-scm.com / book / da / v2 / Git-Branching-Basic-Branching-and-Merging
Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...
OpenTTD vs Simutrans
Oprettelse af din egen transportsimulering kan være sjovt, afslappende og ekstremt lokkende. Derfor skal du sørge for at prøve så mange spil som mulig...
OpenTTD Tutorial
OpenTTD er et af de mest populære forretningssimuleringsspil derude. I dette spil skal du oprette en vidunderlig transportvirksomhed. Du starter dog i...