-
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
10.1 Git bakom kulisserna - Lågnivådel och användardel
Du kanske hoppade till det här kapitlet från ett tidigare kapitel, eller så har du kommit hit efter att ha läst hela boken i ordning – oavsett vilket går vi här igenom Gits inre funktion och implementation. Vi har märkt att en förståelse för den här informationen är grundläggande för att uppskatta hur användbart och kraftfullt Git är, men vi har också hört att den kan upplevas som förvirrande och onödigt komplex för nybörjare. Därför har vi lagt den här diskussionen sist i boken, så att du kan läsa den när det passar i din inlärningsprocess. Det avgör du själv.
Nu när du är här, låt oss sätta igång. Först, om det ännu inte är tydligt, är Git i grunden ett innehållsadresserbart filsystem med ett VCS‑gränssnitt ovanpå. Du kommer att lära dig mer om vad det betyder om en stund.
I Gits tidiga dagar (främst före 1.5) var användargränssnittet mycket mer komplext eftersom det betonade detta filsystem snarare än ett polerat VCS. De senaste åren har gränssnittet förfinats tills det är lika rent och lätt att använda som vilket annat system som helst, men bilden av att det är svårt och komplext att lära sig lever kvar.
Lagret med det innehållsadresserbara filsystemet är otroligt kraftfullt, så vi börjar med det i det här kapitlet; därefter lär du dig om transportmekanismerna och de kodförrådsförvaltningsuppgifter du kan behöva hantera.
Lågnivådel och användardel
Den här boken handlar främst om hur du använder Git med ett trettiotal underkommandon som checkout, branch, remote och så vidare.
Men eftersom Git från början var en verktygslåda för ett versionshanteringssystem snarare än ett helt användarvänligt VCS har det ett antal underkommandon som gör lågnivåarbete och är tänkta att kedjas ihop i UNIX‑stil eller anropas från skript.
Dessa kommandon brukar kallas Gits lågnivåkommandon (plumbing‑kommandon), medan de mer användarvänliga kommandona kallas användarkommandon (porcelain‑kommandon).
Som du redan har märkt handlar bokens första nio kapitel nästan uteslutande om användarkommandon. Men i det här kapitlet arbetar du mest med lågnivåkommandon, eftersom de ger dig tillgång till Gits innandöme och hjälper till att visa hur och varför Git gör som det gör. Många av dessa kommandon är inte tänkta att användas manuellt på kommandoraden, utan snarare som byggstenar för nya verktyg och anpassade skript.
När du kör git init i en ny eller befintlig katalog skapar Git katalogen .git, där nästan allt som Git lagrar och manipulerar finns.
Om du vill säkerhetskopiera eller klona ditt kodförråd ger det dig nästan allt du behöver att kopiera den här katalogen till en annan plats.
Hela detta kapitel handlar i praktiken om det du kan se i den här katalogen.
Så här ser en nyinitierad .git‑katalog vanligtvis ut:
$ ls -F1
config
description
HEAD
hooks/
info/
objects/
refs/
Beroende på din version av Git kan du se lite extra innehåll där, men detta är ett färskt git init‑kodförråd – det du normalt ser.
Filen description används bara av GitWeb‑programmet, så bry dig inte om den.
Filen config innehåller dina projektspecifika konfigurationsalternativ, och katalogen info håller en global exkluderingsfil för ignorerade mönster som du inte vill spåra i en .gitignore‑fil.
Katalogen hooks innehåller dina krok‑skript på klient‑ eller serversidan, som vi går igenom i detalj i Git‑krokar.
Kvar finns fyra viktiga poster: filerna HEAD och index (som ännu inte har skapats), samt katalogerna objects och refs.
Dessa är Gits kärndelar.
Katalogen objects lagrar allt innehåll i din databas, katalogen refs lagrar pekare till incheckningsobjekt i den datan (grenar, taggar, fjärrreferenser med mera), filen HEAD pekar på grenen du har utcheckad just nu och filen index är där Git lagrar information om din köyta.
Nu tittar vi närmare på var och en av dessa delar för att se hur Git fungerar.