In deze les gaan we het volgende doen:
- Een externe opslagplaats maken
- Maak een lokale kopie van de externe repository
- Maak twee takken in de lokale kopie
- Duw een vertakking naar de externe repository
- Lokale vestigingen verwijderen
- Externe vertakkingen verwijderen
De les zou je een algemeen begrip moeten geven van het proces voor het maken en verwijderen van vertakkingen, zodat je een goede beheersing hebt over de noodzakelijke stappen wanneer je een lokale of externe vertakking moet verwijderen.
Laten we beginnen.
1. Een externe opslagplaats maken
Laten we een map maken met de naam project.git en initialiseren om de externe repository te zijn:
$ mkdir-project.git$ cd-project.git
$ git init -bare
Lege Git-repository geïnitialiseerd in /Users/zak/_work/LearnGIT/git_delete_branch/project.git/
2. Een lokale kopie van de externe repository maken
Laten we op een nieuwe locatie een lokale kopie maken met de naam project_local van de externe repository met behulp van de clone-opdracht.
Opmerking: als u met GitHub of BitBucket werkt, volgt u hetzelfde proces om de repository te klonen. In dat geval heb je een SSH-link in plaats van het volledige bestandspad dat hier wordt gebruikt.
$ git clone /Users/zak/_work/LearnGIT/git_delete_branch/project.git project_localKlonen naar 'project_local'…
waarschuwing: je lijkt een lege repository te hebben gekloond.
gedaan.
3. Vertakkingen maken binnen de lokale kopie
Laten we eerst een bestand toevoegen aan de lokale kopie en het dan naar de externe repository pushen:
$ cd project_local$ raak LeesMij aan.tekst
$ git add -A
$ git commit -m "De module initialiseren"
[master (root-commit) 81eb2a3] De module initialiseren
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
aanmaakmodus 100644 Leesmij.tekst
$ git push origin master
Objecten tellen: 3, klaar.
Objecten schrijven: 100% (3/3), 221 bytes | 0 bytes/s, klaar.
Totaal 3 (delta 0), hergebruikt 0 (delta 0)
Naar /Gebruikers/zak/_work/LearnGIT/git_delete_branch/project.git
* [nieuwe branch] master -> master
In de bovenstaande opdrachten hebben we een bestand gemaakt met de naam ReadMe.txt, voegde het toe aan de lokale kopie, committe het aan de lokale kopie en pushte de wijzigingen vervolgens naar de externe repository of de master-branch van de oorsprong.
Als je de branches controleert, zie je de master branch in de lokale kopie:
$ git branch* meester
Als je de remote branches controleert, zie je daar ook de master branch:
$ git branch -rherkomst/meester
Hint: Je kunt de '-a' optie gebruiken om alle branches in lokale en remote repositories samen te zien.
$ git branch -a* meester
afstandsbedieningen/oorsprong/master
Laten we twee branches maken, b1 en b2 genaamd, van de master branch:
$ git branch b1$ git branch b2
Laten we eens kijken of de branches zijn gemaakt:
$ git branchb1
b2
* meester
Nu gaan we enkele wijzigingen aanbrengen in de takken:
$ git kassa b1Overgeschakeld naar tak 'b1'
$ raak tak1 . aan.tekst
$ git add -A
$ git commit -m "Branch1 wijziging"
[b1 a2f488e] Tak1 wijziging
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
maak modus 100644 branch1.tekst
$ git kassa b2
Overgeschakeld naar tak 'b2'
$ raak tak2 . aan.tekst
$ git add -A
$ git commit -m "Branch2 modificatie"
[b2 2abb723] Tak2 modificatie
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
maak modus 100644 branch2.tekst
Laten we de status van lokale en externe filialen controleren:
$ git branchb1
* b2
meester
$ git branch -r
herkomst/meester
We kunnen lokaal zien dat we drie takken master hebben, b1 en b2. Maar we hebben alleen de master branch in de remote repository.
4. Vertakkingen naar externe repository pushen
Laten we de b1-tak naar de externe repository pushen:
$ git push oorsprong b1Objecten tellen: 2, klaar.
Delta-compressie met maximaal 4 threads.
Objecten comprimeren: 100% (2/2), klaar.
Objecten schrijven: 100% (2/2), 249 bytes | 0 bytes/s, klaar.
Totaal 2 (delta 0), hergebruikt 0 (delta 0)
Naar /Gebruikers/zakh/_work/LearnGIT/git_delete_branch/project.git
* [nieuwe vestiging] b1 -> b1
U kunt de status van de lokale en externe vestigingen controleren:
$ git branchb1
* b2
meester
$ git branch -r
oorsprong/b1
herkomst/meester
Uit de bovenstaande filiaalstatussen kunnen we zien dat de b1-tak ook op afstand beschikbaar is.
5. Takken lokaal verwijderen
U kunt vertakkingen lokaal verwijderen met de -d of -D optie.
git branch -dLaten we eerst in de master branch kijken, zodat we de b1 en b2 branches kunnen verwijderen.
$ git checkout masterOvergeschakeld naar tak 'master'
Uw branche is up-to-date met 'origin/master'.
Laten we eerst de -d optie proberen om de branch b1 te verwijderen:
$ git branch -d b1error: De branch 'b1' is niet volledig gemerged.
Als je zeker weet dat je het wilt verwijderen, voer je 'git branch -D b1' uit.
De fout vertelt je dat je de wijzigingen van branch b1 moet mergen. Dit is een beveiliging, zodat je niet per ongeluk je werk op takken verliest. U kunt de optie -D gebruiken om het samenvoegen geforceerd te verwijderen. Maar laten we in dit geval de wijzigingen van b1 en b2 samenvoegen tot master en deze naar de externe repository pushen.
$ git merge b181eb2a3 bijwerken... a2f488e
Vooruitspoelen
tak1.txt | 0
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
maak modus 100644 branch1.tekst
$ git merge b2
Samenvoeging gemaakt door de 'recursieve' strategie.
tak2.txt | 0
1 bestand gewijzigd, 0 invoegingen (+), 0 verwijderingen (-)
maak modus 100644 branch2.tekst
$ git push origin master
Objecten tellen: 4, klaar.
Delta-compressie met maximaal 4 threads.
Objecten comprimeren: 100% (4/4), klaar.
Objecten schrijven: 100% (4/4), 454 bytes | 0 bytes/s, klaar.
Totaal 4 (delta 1), hergebruikt 0 (delta 0)
Naar /Gebruikers/zak/_work/LearnGIT/git_delete_branch/project.git
81eb2a3… 34db496 meester -> meester
Probeer nu de takken opnieuw te verwijderen:
$ git branchb1
b2
* meester
$ git branch -d b1
Tak b1 verwijderd (was a2f488e).
$ git branch -d b2
Verwijderde tak b2 (was 2abb723).
$ git branch
* meester
Je hebt met succes de b1- en b2-takken lokaal verwijderd.
6. Externe vertakkingen verwijderen
Wanneer u de externe takken controleert, ziet u nog steeds b1 aanwezig:
$ git branch -roorsprong/b1
herkomst/meester
U kunt de volgende opdracht gebruiken om een externe vertakking te verwijderen:
git pushU kunt de externe b1-tak dus als volgt verwijderen:
$ git push origin --delete b1Naar /Gebruikers/zakh_eecs/_work/LearnGIT/git_delete_branch/project.git
- [verwijderd] b1
Als je nu je remote branches controleert, zou je b1 niet meer moeten zien:
$ git branch -rherkomst/meester
Gefeliciteerd! Je hebt met succes alle takken verwijderd die je hebt gemaakt. Oefen met het maken van meer branches en het verwijderen ervan om het Git branch verwijderingsproces onder de knie te krijgen.
Verdere studie:
- https://git-scm.com/book/nl/v1/Git-Branching-What-a-Branch-Is
- https://git-scm.com/book/nl/v2/Git-Branching-Branches-in-een-notendop
- https://git-scm.com/book/nl/v2/Git-Branching-Basic-Branching-and-Merging