-
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
4.8 Git pÄ servern - GitLab
GitLab
GitWeb Àr dock ganska primitivt. Om du Àr ute efter en mer modern, fullutrustad Gitserver finns det nÄgra öppen kÀllkods-alternativ dÀr ute som du kan installera istÀllet. Eftersom GitLab Àr en av de mer populÀra, behandlar vi installation och anvÀndning av det som exempel. Detta Àr lite mer komplicerat Àn GitWeb-alternativet och krÀver troligtvis mer underhÄll, men det Àr ett mycket mer utrustat alternativ.
Installation
GitLab Àr en databasbackad webbapplikation, sÄ dess installation Àr lite mer krÀvande Àn andra Gitservrar. Lyckligtvis Àr denna processen vÀldigt vÀldokumenterad och underhÄllen.
Det finns ett antal vĂ€gar du kan ta för att installera GitLab. För att fĂ„ igĂ„ng nĂ„got snabbt, kan du ladda ner en virtuell maskin-avbild eller ett en-klicks-installationsprogram frĂ„n https://bitnami.com/stack/gitlab, och modifiera konfigurationen för att passa din miljö. Ett trevligt som Bitnami har inkluderat Ă€r inloggningsskĂ€rmen (som man kommer Ă„t med alt+â); den ger dig IP-adressen och standardanvĂ€ndarnamnet och lösenordet för det installerade GitLab.
För allt annat, följ guiden i Readme för GitLab Community Edition, vilken du finner pĂ„ https://gitlab.com/gitlab-org/gitlab-ce/tree/master. DĂ€r hittar du ocksĂ„ hjĂ€lp för att installera GitLab via Chef-recept, en virtuell maskin pĂ„ Digital Ocean, och RPM- samt DEB-paket (vilket, vid tiden för författandet, Ă€r i betaversion). Det finns ocksĂ„ âinofficiellaâ guider för hur man fĂ„r igĂ„ng GitLab med ovanliga operativsystem och databaser, ett fullt manuellt installationsskript, och mĂ„nga andra saker.
Administration
GitLabs administrationsgrÀnssnitt nÄs över webben.
Via din webblÀsare, gÄ till datornamnet eller IP-adressen för den dator dÀr GitLab Àr installerat och logga in som en admin-anvÀndare.
StandardanvÀndarnamnet Àr admin@local.host
och standardlösenordet Àr 5iveL!fe
(som du kommer bli pÄbjuden att Àndra sÄ fort du skriver in det).
NĂ€r du vĂ€l loggat in, klicka pĂ„ menyalternativet âAdmin areaâ i menyn uppe till höger.
AnvÀndare
AnvÀndare i GitLab Àr konton som motsvarar personer.
AnvÀndarkonton Àr inte sÄ komplicerade; i huvudsak Àr det en samling personlig information bunden till inloggningsdata.
Varje anvÀndarkonto har en namnrymd, som Àr en logisk gruppering av projekt som tillhör den anvÀndaren.
Om anvÀndaren jane
har ett projekt som heter project
sÄ Àr det projektets URL http://server/jane/project
.
Man kan ta bort en anvĂ€ndare pĂ„ tvĂ„ sĂ€tt. âBlockeringâ av en anvĂ€ndare förhindrar att de loggar in pĂ„ GitLabinstansen, men all data under den anvĂ€ndarens namnrymd finns bevarad, och versioner som Ă€r signerade med den anvĂ€ndarens epostadress lĂ€nkar fortfarande till deras profil.
âRaderingâ av en anvĂ€ndare Ă„ andra sidan, tar bort dem frĂ„n bĂ„de databasen och filsystemet. Alla projekt och data i deras namnrymd tas bort, och alla grupper de Ă€ger kommer ocksĂ„ att tas bort. Detta Ă€r sĂ„ledes en mycket mer permanent och destruktiv handling, och anvĂ€nds dĂ€rför sĂ€llan.
Grupper
En GitLab-grupp Àr en samling av projekt tillsammans med data om hur anvÀndare kan nÄ de projekten.
Varje grupp har en projektnamnrymd (pÄ samma sÀtt som anvÀndare), sÄ om gruppen training
har ett projekt materials
, kommer dess URL att vara http://server/training/materials
.
Varje grupp Ă€r associerad med ett antal anvĂ€ndare, som var och en har en nivĂ„ av rĂ€ttigheter för gruppens projekt och gruppen i sig. Dessa spĂ€nner frĂ„n âGuestâ (enbart arbetspaket och chat) till âOwnerâ (full kontroll över gruppen, dess medlemmar och dess projekt). De olika rĂ€ttigheterna Ă€r för mĂ„nga för att lista hĂ€r, men GitLab har en hjĂ€lpsam lĂ€nk pĂ„ administrationsskĂ€rmen.
Projekt
Ett GitLabprojekt motsvarar grovt mot ett enskilt Gitrepo. Varje projekt tillhör en enda namnrymd, antingen en anvÀndare eller en grupp. Om projektet tillhör en en anvÀndare, har Àgaren av projektet direkt kontroll över vem som har Ätkomst till projektet; om projektet tillhör en grupp, spelar Àven gruppens anvÀndarnivÄbehörigheter roll.
Varje projekt har en synlighetsnivÄ, som kontrollerar vem som har lÀsÄtkomst till projektets sidor och repo.
Om ett projekt Àr Private, mÄste projektets Àgare explicit ge Ätkomst till specifika anvÀndare.
Ett projekt som Àr Internal Àr synligt för alla inloggade anbvÀndare, medan projekt som Àr Public Àr synliga för alla.
Notera att denna kontrollerar bÄde git fetch
-Ätkomst sÄvÀl som Ätkomst till webbgrÀnssnittet för det projektet.
Krokar
GitLab har stöd för krokar bÄde pÄ projekt- och systemnivÄ. Oavsett vilken kommer GitLabservern att utföra ett HTTP POST-anrop med en beskrivande JSON nÀr en relevant hÀndelse intrÀffar. Detta Àr ett förtrÀffligt sÀtt att koppla dina Gitrepon och GitLabinstansen till resten av din utvecklingsautomation, sÄsom CI-servrar, chatrum eller distributionsverktyg.
GrundlÀggande anvÀndning
Det första du kommer vilja göra med GitLab Ă€r att skapa ett nytt projekt. Detta gör du genom att klicka pĂ„ ikonen â+â i verktygsfĂ€ltet. Du kommer bli ombedd att ange projektets namn, vilken namnrymd det skall tillhöra och vad dess synlighetsnivĂ„ skall vara. Det mesta du anger hĂ€r Ă€r inte permanent och kan justeras senare genom instĂ€llningsgrĂ€nssnittet. Klicka pĂ„ âCreate Projectâ, och sedan Ă€r du klar.
SÄ fort projektet finns sÄ vill du sÀkert ansluta det med ett lokalt Gitrepo.
Varje projekt Àr nÄbart över HTTPS eler SSH, som bÄda kan anvÀndas för att konfigurera ett fjÀrrepo.
URL:erna Àr synliga vid toppen av projektets hemsida.
För ett existerande lokalt repo, kommer följande kommando att skapa ett repo benÀmnt gitlab
till vÀrdplatsen:
$ git remote add gitlab https://server/namespace/project.git
Om du inte har en lokal kopia av repot, kan du helt enkelt göra sÄhÀr:
$ git clone https://server/namespace/project.git
WebbgrÀnssnittet tillhandahÄller Ätkomst till flera anvÀndbara vyer av repot sjÀlvt. PÄ varje projekts hemsida visas senaste aktivitet, och lÀnkar i toppen leder dig till vyer över peojektets filer och versionslogg.
Arbeta tillsammans
Det enklaste sĂ€ttet att arbeta tillsammans pĂ„ ett GitLabprojekt Ă€r genom att ge en annan anvĂ€ndare direkt skrivrĂ€ttighet till Gitrepot. Du kan lĂ€gga till en anvĂ€ndare till ett projekt genom att gĂ„ till delen âMembersâ i projektet instĂ€llningar och associera den nya anvĂ€ndaren med enn Ă„tkomstnivĂ„ (skillnaden mellan Ă„tkomstnivĂ„er diskuteras i Grupper). Genom att ge en anvĂ€ndare Ă„tkomstnivĂ„n âDeveloperâ eller över, kan den anvĂ€ndaren villkorslöst skicka upp versioner och grenar direkt till repot.
Ett annat, mer frikopplat sÀtt att samarbeta Àr att anvÀnda sammanslagningsbegÀran.
Denna funktion ger vilken anvÀndare som helst som kan se projektet möjlighet att bidra till det pÄ ett kontrollerat sÀtt.
AnvÀndare med direkt Ätkomst kan helt enkelt skapa en gren, skicka versioner till den och öppna en sammanslagningsbegÀran frÄn sin gren tillbaks in till master
eller nÄgon annan gren.
AnvĂ€ndare som inte har skrivrĂ€ttigheter fölr ett repo kan âklyvaâ repot (skapa sin egen kopia), skicka versioner till den kopian, och sedan öppna en sammanslagningsbegĂ€ran frĂ„n deran gren tillbaks in till huvudprojektet.
Denna modellen ger Àgaren möjlighet att stÀndight ha full kontroll av vad som kommer in i repot och nÀr, samtidigt som man tillÄter bidrag frÄn opÄlitliga anvÀndare.
SammanslagningsbegÀran och felrapporter Àr huvuddelarna i lÄnglivade diskussioner i GitLab. Varje sammanslagningsbegÀran tillÄter rad-för-rad-diskussion av den föreslagna Àndringen (som stödjer en enkel form av kodgranskning), sÄ vÀl som generell översiktlig disussion. BÄda kan tilldelas anvÀndare, eller organiseras i milstolpar.
Detta avsnitt fokuserade huvudsakligen pÄ Git-relaterade funktioner av GitLab, men som ett moget projekt har den mÄnga andra verktyg för att hjÀlpa ditt team att jobba tillsammans sÄsom projektwikisidor och sytemunderhÄllningsverktyg. En fördel med GitLa Àr att nÀr vÀl Servern Àr uppe och kör, behöver du sÀllan modifiera en konfigurationsfil eller lÀsrÀttigheter till servern via SSH; den mesta administrationen och generell anvÀndning kan ske via webblÀsarfönstret.