Hoppa till innehåll

Skapa och växla: git branch och git switch

  • Att skapa en ny gren och växla till den med git switch -c.
  • Att växla mellan grenar med git switch.
  • Att filerna i arbetskatalogen byts ut när du växlar gren.

En grenBranchEn egen utvecklingslinje i ett repository, där man kan göra ändringar utan att påverka huvudversionen.Läs mer om gren gör nytta först när du arbetar på den. Du skapar en gren för en ny idé, gör dina commits där och växlar tillbaka till main när du vill se den version som fungerar. Ingenting du gör på den nya grenen påverkar main.

git switch -c dag-4 gör två saker på en gång: den skapar grenen dag-4 på den commit du står på, och växlar till den. -c står för create, skapa. Utan -c växlar git switch till en gren som redan finns.

När du växlar gren gör GitGitEtt program som sparar versioner av filerna i ett projekt, så att man kan se vad som ändrats, gå tillbaka till tidigare versioner och arbeta flera samtidigt.Läs mer om Git om arbetskatalogen så att filerna ser ut som i grenens senaste commitCommitEn sparad version av projektet i Git, med en beskrivning av vad som ändrats, vem som gjorde det och när.Läs mer om commit. Filerna byts ut på plats, i samma mapp. Det finns aldrig två kopior av mappen.

Skapa en gren för en fjärde dag och växla till den:

Terminal
$ git switch -c dag-4
Switched to a new branch 'dag-4'

Lägg till raden Dag 4: Sundsvall i resplan.txt och spara den som vanligt:

Terminal
$ git add resplan.txt
$ git commit -m "Lägg till dag 4: Sundsvall"
[dag-4 8923e85] Lägg till dag 4: Sundsvall
1 file changed, 1 insertion(+)

Git skriver nu dag-4 i stället för main först inom hakparentesen. Commiten hamnade på den nya grenen. git log --oneline visar var grenarna pekar:

Terminal
$ git log --oneline
8923e85 (HEAD -> dag-4) Lägg till dag 4: Sundsvall
7620fac (main) Lägg till dag 3: Gävle
226c08c Första versionen av resplanen

Växla tillbaka till main och titta i filen. Dag 4 finns inte där:

Terminal
$ git switch main
Switched to branch 'main'
$ cat resplan.txt
Resplan sommaren
Dag 1: Stockholm
Dag 2: Uppsala
Dag 3: Gävle

cat skriver ut innehållet i en fil i terminalen. Den fungerar i PowerShell, på macOS och på Linux. Du kan också öppna filen i texteditorn. Växlar du tillbaka med git switch dag-4 är dag 4 där igen.

Med --all --graph visar git log alla grenar på en gång, med ett enkelt diagram till vänster:

Terminal
$ git log --oneline --all --graph
* 8923e85 (dag-4) Lägg till dag 4: Sundsvall
* 7620fac (HEAD -> main) Lägg till dag 3: Gävle
* 226c08c Första versionen av resplanen

Låt grenen dag-4 vara kvar. Du för in den i main i nästa lektion.

1. Vilket kommando skapar grenen dag-4 och växlar till den?
Visa rätt svar
  • git switch -c dag-4: -c står för create, skapa.
2. Du står på dag-4 och har gjort en commit som lägger till dag 4. Vad händer med resplan.txt när du kör git switch main?
Visa rätt svar
  • Filen ser ut som i main, utan dag 4: Git byter ut filerna i arbetskatalogen mot grenens version. Dag 4 finns kvar på dag-4.
3. Git säger "Your local changes to the following files would be overwritten by checkout" när du försöker växla gren. Vad gör du?
Visa rätt svar
  • Gör en commit av ändringen, eller ångra den, och växla sedan: Git vägrar växla för att inte skriva över ditt osparade arbete.

  • git switch -c <namn> skapar en ny gren där du står och växlar till den.
  • git switch <namn> växlar till en gren som redan finns.
  • Nya commits hamnar på den gren du står på. De andra grenarna påverkas inte.
  • När du växlar gren byter Git ut filerna i arbetskatalogen. Gör en commit innan du växlar.
  • git log --oneline --all --graph visar alla grenar och var de pekar.