Grundlæggende om Git-forgrening
Evnen til let at forgrene sig er en af de bedste funktioner i Git. Oprettelse af filialer i andre versionskontrolsystemer kan være dyrt med hensyn til plads og behandlingskrav. Git-forgrening er effektiv. Så brugerne er mere tilbøjelige til at bruge filialer i Git.
En forgreningsworkflow
Lad os antage, at du startede et nyt projekt kaldet myvideogame. Det har en enkelt gren. Standardnavnet på den oprindelige gren i Git kaldes master. Det oprettes automatisk. Lad os oprette myvideogame Git-arkivet.
$ mkdir myvideogame$ cd myvideogame
$ git init
Du har oprettet et tomt Git-lager. Lad os tilføje vores design.txt-fil med noget tekst i.
$ echo "Designbeslutning 1: Tilføj billeder" >> design.txt$ echo "Design Decision 2: Write Code" >> design.txt
$ git add -A
$ git commit -m "C0: Tilføjet designfil"
Lad os tilføje nogle flere ændringer:
$ echo "Design Decision 3: Test Game" >> design.txt$ git add -A
$ git commit -m "C1: Modificeret designfil"
Hvis du tjekker historikken, finder du:
$ git log - online6a09bd6 C1: Modificeret designfil
5f18d89 C0: Tilføjet designfil
Hvis du kontrollerer Git-status og alle grene, der blev oprettet (ved hjælp af kommandoen: git branch -a), ser du:
$ git statusPå filialmester
intet at begå, arbejder bibliotek ren
$ git gren -a
* mester
I øjeblikket har du følgende situation:
Du har forpligtet dig to i mestergrenen.
Lad os antage, at du har fundet fejl i din spilprøvning, men du vil ikke løse problemet i mastergrenen, fordi du endnu ikke vil rode med det originale design. Så du kan oprette en ny gren kaldet bugfix:
$ git gren bugfixNu hvis du tjekker alle grene:
$ git gren -afejlrettelse
* mester
Nu har du oprettet en ny gren kaldet bugfix. Situationen kan visualiseres som denne:
Stjernen (*) ved siden af mastergrenen betyder dog, at du stadig er i mesteren. Hvis du foretager ændringer, vil den stadig gå ind i mastergrenen. Du kan bruge checkout-kommandoen til at ændre grene:
$ git checkout bugfixSkiftet til gren 'bugfix'
Du kan kontrollere, hvilken gren du bruger med status eller kommando "gren -a":
$ git statusPå gren bugfix
intet at begå, arbejder bibliotek ren
$ git gren -a
* fejlrettelse
mestre
Lad os nu rette fejlen:
$ echo "Bug Fix 1" >> design.txt$ git add -A
$ git commit -m "C2: Bug Fixed 1"
Du har oprettet en situation som denne:
Mastergrenen har ikke C2-ændringen. Du kan nemt kontrollere dette ved at kontrollere historien for de to grene.
Først historien om bugfix-grenen:
$ git statusPå gren bugfix
intet at begå, arbejder bibliotek ren
$ git log - online
e8f615b C2: Fejlret 1
6a09bd6 C1: Modificeret designfil
5f18d89 C0: Tilføjet designfil
Derefter kan du skifte til mastergren og kontrollere dens historie:
$ git checkout masterSkiftet til gren 'master'
$ git status
På filialmester
intet at begå, arbejder bibliotek ren
$ git log - online
6a09bd6 C1: Modificeret designfil
5f18d89 C0: Tilføjet designfil
Du kan se, at hovedgrenen ikke har ændringer fra bugfix-grenen.
Du kan altid oprette en ny filial fra den nuværende filial, du er placeret i. Antag, at du vil oprette en anden gren, der indeholder eksperimentelle funktioner. Du kan oprette grenen fra master og tilføje eksperimentelle funktioner til den:
$ git statusPå filialmester
intet at begå, arbejder bibliotek ren
$ git gren eksperimentel
$ git checkout eksperimentelt
Skiftet til gren 'eksperimentel'
$ git status
På gren eksperimentel
intet at begå, arbejder bibliotek ren
$ echo "Tilføjelse af eksperimentfunktioner" >> design.txt
$ git add -A
$ git commit -m "C3: Tilføjede eksperimentelle funktioner"
[eksperimentel 637bc20] C3: Tilføjet eksperimentelle funktioner
1 fil ændret, 1 indsættelse (+)
Hvis du tjekker historikken for din eksperimentelle gren, ser du:
$ git statusPå gren eksperimentel
intet at begå, arbejder bibliotek ren
$ git log - online
637bc20 C3: Tilføjede eksperimentelle funktioner
6a09bd6 C1: Modificeret designfil
5f18d89 C0: Tilføjet designfil
Du vil bemærke, at du ikke har C2-forpligtelsen, som blev oprettet i bugfix-grenen. Fordi eksperimentel gren oprettes fra hovedfilial, ser den ikke bugfix-ændringerne. Du har følgende situation:
Konklusion
Tillykke! Du har lært at forgrene dig.
Git-grene er nemme og hurtige at lave. Det er en af grundene til Gits popularitet. Hvis du vil blive en dygtig Git-bruger, skal du blive dygtig i Git-forgrening.
Yderligere studier:
https: // git-scm.com / book / da / v2 / Git-Branching-Basic-Branching-and-Merging