-
1. Kom igång
- 1.1 Om versionshantering
- 1.2 En kort historik om Git
- 1.3 Vad är Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 Första gången med Git
- 1.7 Få hjälp
- 1.8 Sammanfattning
-
2. Grunderna i Git
- 2.1 Att få tag i ett Git‑kodförråd
- 2.2 Spara ändringar i kodförrådet
- 2.3 Visa incheckningshistoriken
- 2.4 Ångra saker
- 2.5 Arbeta med fjärrkodförråd
- 2.6 Att tagga
- 2.7 Git-alias
- 2.8 Sammanfattning
-
3. Git-grenar
- 3.1 Grenar i korthet
- 3.2 Grundläggande gren- och sammanfogningsarbete
- 3.3 Grenhantering
- 3.4 Arbetsflöden med grenar
- 3.5 Fjärrgrenar
- 3.6 Ombasering
- 3.7 Sammanfattning
-
4. Git på servern
- 4.1 Protokollen
- 4.2 Konfigurera Git på en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konfigurera servern
- 4.5 Git-demon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Tredjepartsalternativ
- 4.10 Sammanfattning
-
5. Distribuerat Git
-
6. GitHub
-
7. Git-verktyg
- 7.1 Revisionsurval
- 7.2 Interaktiv köläggning
- 7.3 Lägga undan och städa
- 7.4 Signera ditt arbete
- 7.5 Sökning
- 7.6 Skriva om historik
- 7.7 Nollställning förklarad
- 7.8 Avancerad sammanslagning
- 7.9 Rerere
- 7.10 Felsöka med Git
- 7.11 Undermoduler
- 7.12 Bunta
- 7.13 Ersätt
- 7.14 Lagring av inloggningsuppgifter
- 7.15 Sammanfattning
-
8. Anpassa Git
- 8.1 Git‑konfiguration
- 8.2 Git‑attribut
- 8.3 Git‑krokar
- 8.4 Ett exempel på Git‑upprätthållen policy
- 8.5 Sammanfattning
-
9. Git och andra system
- 9.1 Git som klient
- 9.2 Migrera till Git
- 9.3 Sammanfattning
-
10. Git bakom kulisserna
- 10.1 Lågnivådel och användardel
- 10.2 Git-objekt
- 10.3 Git-referenser
- 10.4 Packfiler
- 10.5 Refspecen
- 10.6 Överföringsprotokoll
- 10.7 Underhåll och dataåterställning
- 10.8 Miljövariabler
- 10.9 Sammanfattning
-
A1. Bilaga A: Git i andra miljöer
- A1.1 Grafiska gränssnitt
- A1.2 Git i Visual Studio
- A1.3 Git i Visual Studio Code
- A1.4 Git i IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git i Sublime Text
- A1.6 Git i Bash
- A1.7 Git i Zsh
- A1.8 Git i PowerShell
- A1.9 Sammanfattning
-
A2. Bilaga B: Bädda in Git i dina applikationer
- A2.1 Git på kommandoraden
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga C: Git-kommandon
- A3.1 Uppstart och konfiguration
- A3.2 Skaffa och skapa projekt
- A3.3 Grundläggande ögonblicksbilder
- A3.4 Grening och sammanslagning
- A3.5 Dela och uppdatera projekt
- A3.6 Inspektion och jämförelse
- A3.7 Felsökning
- A3.8 Patchning
- A3.9 E‑post
- A3.10 Externa system
- A3.11 Administration
- A3.12 Lågnivåkommandon
3.3 Git-grenar - Grenhantering
Grenhantering
Nu när du har skapat, sammanfogat och tagit bort grenar ska vi titta på några verktyg för grenhantering som är användbara när du jobbar med grenar ofta.
Kommandot git branch gör mer än att bara skapa och ta bort grenar.
Om du kör det utan argument får du en enkel lista över dina aktuella grenar:
$ git branch
iss53
* master
testing
Observera att * före master: visar vilken gren du har växlad till (alltså grenen som HEAD pekar på).
Det betyder att om du checkar in nu kommer master att flyttas framåt med ditt nya arbete.
För att se den senaste incheckningen på varje gren kan du köra git branch -v:
$ git branch -v
iss53 93b412c Fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 Add scott to the author list in the readme
De användbara flaggorna --merged och --no-merged kan begränsa listan till grenar som du har eller inte har sammanfogat in i grenen du står på.
För att se vilka grenar som redan är sammanfogade med den gren du står på kan du köra git branch --merged:
$ git branch --merged
iss53
* master
Eftersom du redan sammanfogade iss53 tidigare syns den i listan.
Grenar i listan utan * framför går i regel bra att ta bort med git branch -d; du har redan fått in deras arbete i en annan gren.
För att se grenar som innehåller arbete som inte är sammanfogat kan du köra git branch --no-merged:
$ git branch --no-merged
testing
Detta visar din andra gren.
Eftersom den innehåller arbete som inte är sammanfogat ännu kommer git branch -d att misslyckas:
$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.
Om du verkligen vill ta bort grenen och förlora arbetet kan du tvinga borttagningen med -D, som felmeddelandet föreslår.
|
Tips
|
Flaggorna Du kan alltid ange en extra gren för att fråga om sammanslagningsläge mot en annan gren utan att växla till den först, till exempel vad som inte är sammanfogat i
|
Byta namn på en gren
|
Var uppmärksam
|
Byt inte namn på grenar som fortfarande används av andra medarbetare. Byt inte namn på en gren som master/main/mainline utan att ha läst avsnittet Byta namn på master-grenen. |
Anta att du har en gren som heter bad-branch-name och vill byta namn till corrected-branch-name utan att förlora historik.
Du vill också byta namn på grenen i fjärrkodförrådet (GitHub, GitLab eller annan server).
Hur gör du?
Byt namn lokalt med git branch --move:
$ git branch --move bad-branch-name corrected-branch-name
Detta ersätter bad-branch-name med corrected-branch-name lokalt.
För att andra ska se den korrigerade grenen i fjärrkodförrådet behöver du skicka den:
$ git push --set-upstream origin corrected-branch-name
Nu tar vi en snabb titt på läget:
$ git branch --all
* corrected-branch-name
main
remotes/origin/bad-branch-name
remotes/origin/corrected-branch-name
remotes/origin/main
Du står på corrected-branch-name och den finns i fjärrkodförrådet.
Den gamla grenen finns fortfarande kvar, men du kan ta bort den så här:
$ git push origin --delete bad-branch-name
Nu är det dåliga namnet helt ersatt av det korrigerade.
Byta namn på master-grenen
|
Varning
|
Att byta namn på en gren som master/main/mainline/default bryter integrationer, tjänster, hjälpskript och bygg-/utgåveskript i ditt kodförråd. Se till att samråda med dina medarbetare innan du gör detta. Kontrollera också att du uppdaterar alla referenser till det gamla namnet i kod och skript. |
Byt namn på din lokala master till main med följande kommando:
$ git branch --move master main
Nu finns ingen lokal master längre, eftersom den har bytts till main.
För att andra ska se den nya main-grenen behöver du skicka den till fjärrkodförrådet:
$ git push --set-upstream origin main
Nu hamnar du i följande läge:
$ git branch --all
* main
remotes/origin/HEAD -> origin/master
remotes/origin/main
remotes/origin/master
Din lokala master är borta och ersatt av main.
main finns i fjärrkodförrådet, men den gamla master finns fortfarande kvar där.
Andra medarbetare kommer fortsätta använda master som bas tills du gör fler ändringar.
Nu återstår några uppgifter för att slutföra bytet:
-
Projekt som är beroende av detta behöver uppdatera kod och/eller konfiguration.
-
Uppdatera inställningar för testkörningar.
-
Justera bygg- och utgåveskript.
-
Uppdatera inställningar i kodförrådsvärden för standardgren, sammanslagningsregler och annat som matchar grennamn.
-
Uppdatera referenser till gamla grenen i dokumentation.
-
Stäng eller sammanfoga eventuella ändringsförslag som riktar sig mot gamla grenen.
När du har gjort allt detta och är säker på att main fungerar som master kan du ta bort master:
$ git push origin --delete master