Grunderna i Git Branching
Förmågan att enkelt förgrena sig är en av de bästa funktionerna i Git. Att skapa filialer i andra versionskontrollsystem kan vara dyrt när det gäller utrymmes- och bearbetningskrav. Git-förgrening är effektiv. Så användare är mer benägna att använda filialer i Git.
Ett filialarbete
Låt oss anta att du startade ett nytt projekt som heter myvideogame. Den har en enda gren. Standardnamnet på den ursprungliga filialen i Git kallas master. Det skapas automatiskt. Låt oss skapa myvideogame Git-arkivet.
$ mkdir myvideogame$ cd myvideogame
$ git init
Du har skapat ett tomt Git-arkiv. Låt oss lägga till vår design.txt-fil med lite text i.
$ echo "Designbeslut 1: Lägg till bilder" >> design.Text$ echo "Design Decision 2: Write Code" >> design.Text
$ git add -A
$ git commit -m "C0: Tillagd designfil"
Låt oss lägga till några fler ändringar:
$ echo "Design Decision 3: Test Game" >> design.Text$ git add -A
$ git commit -m "C1: Modified Design File"
Om du kontrollerar historiken hittar du:
$ git log - online6a09bd6 C1: Modifierad designfil
5f18d89 C0: Tillagd designfil
Om du kontrollerar Git-status och alla grenar som skapades (med kommandot: git branch -a), ser du:
$ git-statusPå filialmästaren
inget att begå, arbetar katalogen ren
$ git gren -a
* mästare
För närvarande har du följande situation:
Du har gjort två åtaganden i mastergrenen.
Låt oss anta att du har hittat buggar i ditt speltest, men du vill inte ta itu med problemet i huvudgrenen eftersom du inte vill röra med den ursprungliga designen än. Så du kan skapa en ny gren som heter bugfix:
$ git gren bugfixNu om du kontrollerar alla grenar:
$ git gren -abuggfix
* mästare
Nu har du skapat en ny gren som heter bugfix. Situationen kan visualiseras så här:
Stjärnan (*) bredvid mastergrenen betyder dock att du fortfarande är i master. Om du gör ändringar kommer den fortfarande att gå in i huvudgrenen. Du kan använda kommandot kassa för att ändra grenar:
$ git checkout bugfixByt till gren 'bugfix'
Du kan kontrollera vilken gren du använder med status eller "gren -a" -kommando:
$ git-statusPå gren bugfix
inget att begå, arbetar katalogen ren
$ git gren -a
* buggfix
bemästra
Låt oss nu fixa felet:
$ echo "Bug Fix 1" >> design.Text$ git add -A
$ git commit -m "C2: Bug Fixed 1"
Du har skapat en sådan situation:
Huvudgrenen har inte C2-ändringen. Du kan enkelt verifiera detta genom att kontrollera historiken för de två filialerna.
Först historien om bugfix-grenen:
$ git-statusPå gren bugfix
inget att begå, arbetar katalogen ren
$ git log - online
e8f615b C2: Bugg fixat 1
6a09bd6 C1: Modifierad designfil
5f18d89 C0: Lagt till designfil
Sedan kan du växla till huvudgren och kontrollera dess historik:
$ git checkout masterBytt till filial "master"
$ git-status
På filialmästaren
inget att begå, arbetar katalogen ren
$ git log - online
6a09bd6 C1: Modifierad designfil
5f18d89 C0: Lagt till designfil
Du kan se att huvudgrenen inte har ändringarna från bugfix-grenen.
Du kan alltid skapa en ny filial från den aktuella filialen du befinner dig i. Antag att du vill skapa en annan gren som innehåller experimentella funktioner. Du kan skapa filialen från master och lägga till experimentella funktioner i den:
$ git-statusPå filialmästaren
inget att begå, arbetar katalogen ren
$ git gren experimentell
$ git checkout experimentellt
Växlade till filial "experimentell"
$ git-status
På experimentell gren
inget att begå, arbetar katalogen ren
$ echo "Lägga till experimentfunktioner" >> design.Text
$ git add -A
$ git commit -m "C3: Tillagda experimentella funktioner"
[experimentellt 637bc20] C3: Tillagda experimentella funktioner
1 fil ändrad, 1 infogning (+)
Om du kontrollerar historiken för din experimentella gren ser du:
$ git-statusPå experimentell gren
inget att begå, arbetar katalogen ren
$ git log - online
637bc20 C3: Tillagda experimentella funktioner
6a09bd6 C1: Modifierad designfil
5f18d89 C0: Tillagd designfil
Du kommer att märka att du inte har C2-åtagandet som skapades i bugfix-grenen. Eftersom experimentell gren skapas från huvudgren ser buggfixändringarna inte. Du har följande situation:
Slutsats
Grattis! Du har lärt dig att förgrena dig.
Git grenar är enkla och snabba att göra. Det är en av anledningarna till Gits popularitet. Om du vill bli en skicklig Git-användare måste du bli skicklig i Git-förgrening.
Ytterligare studier:
https: // git-scm.com / book / en / v2 / Git-Branching-Basic-Branching-and-Merging