-
1. Kom igÄng
- 1.1 Om versionshantering
- 1.2 En kort historik av Git
- 1.3 Vad Àr Git?
- 1.4 Kommandoraden
- 1.5 Installera Git
- 1.6 AnvÀnda Git för första gÄngen
- 1.7 FÄ hjÀlp
- 1.8 Sammanfattning
-
2. Grunder i Git
- 2.1 Skaffa ett Git-förvar
- 2.2 Spara Àndringar till förvaret
- 2.3 Visa historiken
- 2.4 Ă ngra saker
- 2.5 Jobba med fjÀrrförvar
- 2.6 Taggning
- 2.7 Git alias
- 2.8 Sammanfattning
-
3. Git förgreningar
-
4. Git pÄ servern
- 4.1 Protokollen
- 4.2 Skaffa Git pÄ en server
- 4.3 Generera din publika SSH-nyckel
- 4.4 Konvigurera servern
- 4.5 Git Daemonen
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Alternativ tillhandahÄllna av tredje part
- 4.10 Sammanfattning
-
5. Distribuerade Git
-
6. GitHub
-
7. Git Tools
- 7.1 Revision Selection
- 7.2 Interactive Staging
- 7.3 Stashing and Cleaning
- 7.4 Signing Your Work
- 7.5 Searching
- 7.6 Rewriting History
- 7.7 Reset Demystified
- 7.8 Advanced Merging
- 7.9 Rerere
- 7.10 Debugging with Git
- 7.11 Submodules
- 7.12 Bundling
- 7.13 Replace
- 7.14 Credential Storage
- 7.15 Summary
-
8. Customizing Git
- 8.1 Git Configuration
- 8.2 Git Attributes
- 8.3 Git Hooks
- 8.4 An Example Git-Enforced Policy
- 8.5 Summary
-
9. Git and Other Systems
- 9.1 Git as a Client
- 9.2 Migrating to Git
- 9.3 Summary
-
10. Git Internals
- 10.1 Plumbing and Porcelain
- 10.2 Git Objects
- 10.3 Git References
- 10.4 Packfiles
- 10.5 The Refspec
- 10.6 Transfer Protocols
- 10.7 Maintenance and Data Recovery
- 10.8 Environment Variables
- 10.9 Summary
-
A1. Bilaga A: Git in Other Environments
- A1.1 Graphical Interfaces
- A1.2 Git in Visual Studio
- A1.3 Git in Eclipse
- A1.4 Git in Bash
- A1.5 Git in Zsh
- A1.6 Git in PowerShell
- A1.7 Summary
-
A2. Bilaga B: Embedding Git in your Applications
- A2.1 Command-line Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Bilaga C: Git Commands
- A3.1 Setup and Config
- A3.2 Getting and Creating Projects
- A3.3 Basic Snapshotting
- A3.4 Branching and Merging
- A3.5 Sharing and Updating Projects
- A3.6 Inspection and Comparison
- A3.7 Debugging
- A3.8 Patching
- A3.9 Email
- A3.10 External Systems
- A3.11 Administration
- A3.12 Plumbing Commands
1.1 Kom igÄng - Om versionshantering
Detta kapitel kommer att handla om hur du kommer igÄng med Git. Vi börjar med en liten introduktion till versionshanteringsverktyg, sedan gÄr vi vidare med hur du fÄr igÄng Git pÄ din dator, och slutligen hur du kan börja anvÀnda det. I slutet av kapitlet skall du förstÄ varför Git finns, varför det skall anvÀndas och du skall vara redo att kunna anvÀnda det.
Om versionshantering
Vad Ă€r âversionshanteringâ, och varför skall du bry dig? Ett versionshanteringsverktyg Ă€r ett program som hĂ„ller reda pĂ„ Ă€ndringar i en eller flera filer över tid sĂ„ att du kan Ă„terskapa specifika versioner vid en senare tidpunkt. I exemplena i denna boken, kommer du att anvĂ€nda kĂ€llkod som de filer som skall versionshanteras, men i verkligheten kan du göra samma sak med nĂ€stan vilken typ av fil som helst pĂ„ en dator.
Om du Ă€r grafiker eller webdesigner och vill spara varje version av en bild eller layout (vilket du med största sannolikt vill), sĂ„ Ă€r ett versionshanteringssysttem (VCS, efter engelskans âVersion Control Systemâ) en bra sak att anvĂ€nda. Det tillĂ„ter dig att Ă„terskapa valda filer eller hela projekt till ett tidigare tillstĂ„nd, jĂ€mföra Ă€ndringar över tid, se vem som senast Ă€ndrade nĂ„got som kan ge upphov till ett problem, vem som introducerade ett fel och nĂ€r, samt mycket mer. Att anvĂ€nda ett VCS betyder Ă€ven att om du klantar till det eller förlorar filer, sĂ„ kan du i regel med lĂ€tthet Ă„terstĂ€lla allt. Allt detta fĂ„r du utan att det ger speciellt mycket merarbete.
Lokala versionshanteringssystem
MÄnga vÀljer att kopiera filer till ett annan mapp för som en primitiv versionshanteringsmetod (förslagsvis en mapp med aktuell tid i namnet, om man har tÀnkt till). Detta arbetssÀtt Àr mycket vanligt för att det Àr sÄ enkelt, men det Àr ocksÄ vÀldigt felkÀnsligt. Det Àr lÀtt att glömma vilken mapp du Àr i och rÄkar skriva till fel fil eller skriver över filer som du inte hade tÀnkt.
För att hantera detta problem, utvecklade programmerare för lÀngesedan lokala VCS som hade en simpel databas för att hÄlla koll pÄ Àndrigarna i filerna som var versionshanterade.
En av de mer populÀra VCS-verktygen var ett system som kallades RCS, vilket Àn idag distribueras med mÄnga datorer. RCS arbetar genom att hÄlla reda pÄ s.k. patchar (d.v.s. skillnader mellan filer) i ett speciellt format pÄ hÄrddisken; det kan Äterskapa hur en fil sÄg ut vid en speciell tidpunkt genom att summera de olika patcharna.
Centraliserade Versionshanteringssystem
NÀsta stora problem folk stöter pÄ Àr nÀr de skall samarbeta med andra utvecklare pÄ andra system. För att hantera detta problem utvecklade man centrala versionshanteringssystem (CVCS). Dessa system (som t.ex. CVS, Subversion, och Perforce) har en enda server som innehÄller alla versionshanterade filer och ett antal klienter som checkar ut filer frÄn den centrala servern. Under mÄnga Är var detta det vanligaste sÀttet att versionshantera.
Denna setup ger mÄnga fördelar, speciellt över lokala VCS. Till exempel sÄ vet alla, till viss del, vad andra gör i projektet. Administratörer har detaljerad kontroll över vem som kan göra vad, och det Àr betydligt enklare att administrera ett centralt system Àn att hantera lokala databaser pÄ varje klient.
Dock har denna setup nĂ„gra verkliga tillkortakommanden. Den mest uppenbara Ă€r den felkritiska del som en enda central server utgör. Om servern gĂ„r ner under en timme sĂ„ kan ingen samarbeta alls eller spara versionshanterade Ă€ndringar av nĂ„got de jobbar med för tillfĂ€llet. Om hĂ„rddisken pĂ„ servern blir korrupt eller skadas, och att inga sĂ€kerhetskopior har sparats, sĂ„ förloras alltâââhela projektets historik, förutom enstaka versioner som folk rĂ„kar ha pĂ„ sina lokala maskiner. Lokala versionshanteringssystem lider av samma problemâââom hela projektets historik finns lagrat pĂ„ ett enda stĂ€lle, riskerar man att förlora allt.
Distribuerade Versionshanteringssystem
Det Àr hÀr distribuerade versionshanteringssystem (DVCS) kommer in. I ett sÄdant system, checkar klienterna inte ut den senaste versionen av filerna; istÀllet speglar de hela förvaret, inklusive all historik. SÄledes, om en server dör och systemen samarbetar via den servern, sÄ kan vilken som helst av klienternas förvar kopieras upp till servern för att ÄterstÀlla den. Varje klon Àr i sjÀlva verket en fullstÀndig sÀkerhetskopia av all data.
Vidare hanterar dessa systemen ganska bra med att ha flera fjÀrrförvar som de kan jobba med, sÄ du kan samarbeta med olika personer pÄ olika sÀtt samtidigt inom samma projekt. Detta ger möjligheten att anvÀnda sig av olika arbetsflöden som inte Àr möjliga med centrala system, som t.ex. hierarkiska modeller.