-
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
2.5 Grunderna i Git - Arbeta med fjärrkodförråd
Arbeta med fjärrkodförråd
För att kunna samarbeta i ett Git-projekt behöver du veta hur du hanterar fjärrkodförråd. Fjärrkodförråd är versioner av ditt projekt som finns någonstans på nätet eller i ett nätverk. Du kan ha flera, och var och en är i regel antingen skrivskyddad eller läs/skriv för dig. Att samarbeta innebär att hantera dessa fjärrkodförråd och att skicka och uppdatera data till och från dem när du behöver dela arbete. Att hantera fjärrkodförråd innefattar att lägga till nya, ta bort sådana som inte längre är giltiga, hantera fjärrgrenar och markera dem som spårade eller inte, och mycket mer. I det här avsnittet går vi igenom några av dessa färdigheter.
|
Notera
|
Fjärrkodförråd kan ligga på din lokala maskin
Det är fullt möjligt att du arbetar mot ett fjärrkodförråd som i praktiken ligger på samma värddator som du själv. Ordet "fjärr" betyder inte nödvändigtvis att kodförrådet ligger någon annanstans på nätet, bara att det finns på en annan plats. Arbetet med ett sådant fjärrkodförråd använder ändå samma standardkommandon för att uppdatera och skicka. |
Visa dina fjärrkodförråd
För att se vilka fjärrservrar du har konfigurerade kan du köra git remote.
Det listar kortnamnen för varje fjärrkodförråd du har angivit.
Om du har klonat ett kodförråd bör du åtminstone se origin – det är standardnamnet Git ger servern du klonade från:
$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin
Du kan också ange -v, vilket visar de URL:er Git har sparat för varje kortnamn när den läser och skriver mot fjärrkodförrådet:
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
Om du har fler än ett fjärrkodförråd listas alla. Ett kodförråd med flera fjärrkodförråd för att arbeta med flera medarbetare kan till exempel se ut så här:
$ cd grit
$ git remote -v
bakkdoor https://github.com/bakkdoor/grit (fetch)
bakkdoor https://github.com/bakkdoor/grit (push)
cho45 https://github.com/cho45/grit (fetch)
cho45 https://github.com/cho45/grit (push)
defunkt https://github.com/defunkt/grit (fetch)
defunkt https://github.com/defunkt/grit (push)
koke git://github.com/koke/grit.git (fetch)
koke git://github.com/koke/grit.git (push)
origin git@github.com:mojombo/grit.git (fetch)
origin git@github.com:mojombo/grit.git (push)
Det betyder att vi kan uppdatera bidrag från alla dessa ganska enkelt. Vi kan också ha rättigheter att skicka till en eller flera av dem, men det ser vi inte här.
Notera att fjärrkodförråden använder olika protokoll; vi går igenom detta mer i Konfigurera Git på en server.
Lägga till fjärrkodförråd
Vi har nämnt och visat hur git clone implicit lägger till fjärrkodförrådet origin åt dig.
Så här lägger du till ett nytt fjärrkodförråd explicit.
För att lägga till ett nytt Git-fjärrkodförråd med ett kortnamn du enkelt kan använda, kör git remote add <kortnamn> <url>:
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
Nu kan du använda pb på kommandoraden i stället för hela URL:en.
Om du till exempel vill uppdatera all information som Paul har men som du inte har lokalt kan du köra git fetch pb:
$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
Pauls master-gren är nu tillgänglig lokalt som pb/master – du kan sammanfoga den med någon av dina grenar eller ta ut en lokal gren på den punkten om du vill inspektera den.
Vi går igenom vad grenar är och hur du använder dem mer i Git-grenar.
Uppdatera och dra från fjärrkodförråd
Som du nyss såg kan du uppdatera data från fjärrprojekt med:
$ git fetch <remote>
Kommandot går till fjärrprojektet och uppdaterar all data som du ännu inte har. Efter detta har du referenser till alla grenar från fjärrkodförrådet som du kan sammanfoga eller inspektera när som helst.
Om du klonar ett kodförråd lägger kommandot automatiskt till fjärrkodförrådet under namnet "origin".
git fetch origin uppdaterar allt nytt arbete som har skickats till fjärrkodförrådet sedan du klonade (eller senast uppdaterade data).
Det är viktigt att förstå att git fetch bara uppdaterar data till ditt lokala kodförråd – det slår inte automatiskt ihop den med ditt arbete eller ändrar den gren du jobbar på.
Du måste manuellt införliva ändringarna när du är redo.
Om din nuvarande gren är inställd på att spåra en fjärrgren (se nästa avsnitt och Git-grenar för mer information) kan du använda git pull för att dra och därefter sammanfoga ändringarna i din aktuella gren.
Det kan vara ett enklare arbetsflöde; normalt gör git clone att din lokala master-gren spårar motsvarande gren i fjärrkodförrådet (standardnamnet i fjärrkodförrådet behöver inte vara master).
git pull drar data från servern du ursprungligen klonade från och försöker automatiskt sammanfoga ändringarna i den gren du jobbar på.
Skicka till fjärrkodförråd
När du har ett projekt du vill dela behöver du skicka det uppströms.
Kommandot är enkelt: git push <fjärrnamn> <gren>.
Om du vill skicka din master-gren till din origin-server (kloning ställer normalt in båda) kör du detta för att skicka dina incheckningar:
$ git push origin master
Kommandot fungerar bara om du klonade från en server där du har skrivrättigheter och om ingen annan har skickat ändringar samtidigt. Om någon annan skickar upp ändringar före dig blir din sändning avvisad. Du måste då uppdatera deras arbete först och införliva det innan du kan skicka. Se Git-grenar för mer om hur du skickar till fjärrservrar.
Inspektera ett fjärrkodförråd
Om du vill se mer information om ett specifikt fjärrkodförråd kan du använda git remote show <remote>.
Om du kör detta med till exempel origin får du något i stil med:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
Det listar URL för fjärrkodförrådet samt information om spårade grenar.
Kommandot berättar också att om du står på master-grenen och kör git pull så slås ändringarna ihop med master-grenen på fjärrkodförrådet efter att den dragits in.
Det listar dessutom alla fjärrreferenser som uppdaterats.
Det här är ett vanligt och enkelt exempel.
När du använder Git mer kommer git remote show att ge mer information:
$ git remote show origin
* remote origin
URL: https://github.com/my-org/complex-project
Fetch URL: https://github.com/my-org/complex-project
Push URL: https://github.com/my-org/complex-project
HEAD branch: master
Remote branches:
master tracked
dev-branch tracked
markdown-strip tracked
issue-43 new (next fetch will store in remotes/origin)
issue-45 new (next fetch will store in remotes/origin)
refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
dev-branch merges with remote dev-branch
master merges with remote master
Local refs configured for 'git push':
dev-branch pushes to dev-branch (up to date)
markdown-strip pushes to markdown-strip (up to date)
master pushes to master (up to date)
Kommandot visar också vilken gren som skickas automatiskt när du kör git push och står på en viss gren.
Det visar även vilka fjärrgrenar du inte har, vilka som tagits bort på servern och flera lokala grenar som automatiskt kan sammanfoga med sin spårade gren när du kör git pull.
Byta namn på och ta bort fjärrkodförråd
Du kan köra git remote rename för att byta namn på ett fjärrkodförråd.
Om du till exempel vill byta namn på pb till paul kan du göra det så här:
$ git remote rename pb paul
$ git remote
origin
paul
Detta ändrar även alla dina spårade grennamn.
Det du tidigare refererade till som pb/master heter nu paul/master.
Om du vill ta bort ett fjärrkodförråd av någon anledning – du har flyttat servern, använder den inte längre eller en tidigare medarbetare har slutat – kan du använda git remote remove eller git remote rm:
$ git remote remove paul
$ git remote
origin
När du tar bort en referens på detta sätt tas även alla spårade grenar och konfigurationsinställningar som hörde till fjärrkodförrådet bort.