Hoppa till innehåll

Öva utan konto: ett fjärr-repository i en mapp

  • Att skapa ett tomt fjärr-repository med git init --bare.
  • Att koppla ditt repository till det med git remote add.
  • Att skicka dina commits med git push -u och hämta en kopia med git clone.

Ett fjärr-repository behöver inte ligga på internet. GitGitEtt program som sparar versioner av filerna i ett projekt, så att man kan se vad som ändrats, gå tillbaka till tidigare versioner och arbeta flera samtidigt.Läs mer om Git fungerar likadant med en mapp på din egen dator. Där kan du öva i lugn och ro, utan konto, lösenord eller nätverk. Allt du lär dig här gör du sedan på exakt samma sätt mot GitHub. Det enda som skiljer är adressen.

Ett fjärr-repository är ett naket repositoryRepository (repo)En projektmapp som Git håller ordning på: alla filer i projektet plus hela historiken av sparade versioner.Läs mer om repository, utan arbetskatalog (på engelska bare repository). Det innehåller bara det som annars ligger i mappen .git: commits och grenar. Ingen redigerar filer där. Det tar bara emot och lämnar ut commits.

Arbetsgången är:

  1. Skapa fjärr-repositoryt: git init --bare <mapp>.
  2. Tala om för ditt repository var det finns: git remote add origin <adress>.
  3. Skicka grenen dit första gången: git push -u origin main.

-u (lång form --set-upstream) gör att din main kommer ihåg att den hör ihop med main på origin. Efter det räcker det att skriva git push och git pull, utan namn.

Kims resplan har två commits. Skapa ett fjärr-repository bredvid, i mappen server:

Terminal
$ git init --bare server/resplan.git
Initialized empty Git repository in /tmp/kim/server/resplan.git/

.git i slutet av namnet är bara en vana. Den visar att mappen är ett fjärr-repository.

Gå in i resplanen och koppla den till fjärr-repositoryt. ../ betyder mappen ovanför den du står i:

Terminal
$ cd resplan
$ git remote add origin ../server/resplan.git
$ git remote -v
origin ../server/resplan.git (fetch)
origin ../server/resplan.git (push)

Skicka main:

Terminal
$ git push -u origin main
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 6 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 526 bytes | 526.00 KiB/s, done.
Total 6 (delta 1), reused 0 (delta 0), pack-reused 0
To ../server/resplan.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.

De första raderna visar hur Git packar och skickar commits och filer. Det viktiga står på slutet: grenen main finns nu på origin ([new branch]), och din main följer origin/main. Det syns också i git status och git log:

Terminal
$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
$ git log --oneline
7620fac (HEAD -> main, origin/main) Lägg till dag 3: Gävle
226c08c Första versionen av resplanen

Nu kan du hämta en egen kopia någon annanstans, som om du satt vid en annan dator. Gå ut ur resplan och klona:

Terminal
$ cd ..
$ git clone server/resplan.git resplan-laptop
Cloning into 'resplan-laptop'...
done.

resplan-laptop har samma filer och samma historik. git clone har redan kopplat den till origin, så där behövs varken git remote add eller -u.

Låt mapparna vara kvar tills du är klar med modulen. I lektion 5 kopplar du resplan-git till GitHub i stället.

1. Vad gör git remote add origin ../server/resplan.git?
Visa rätt svar
  • Talar om för ditt repository att fjärr-repositoryt origin finns på den adressen: Inget skickas än. Det gör git push.
2. Varför skriver du -u första gången du kör git push -u origin main?
Visa rätt svar
  • Så att main kommer ihåg att den hör ihop med main på origin, och git push räcker nästa gång
3. Vad behöver du göra efter git clone för att kunna köra git push och git pull?
Visa rätt svar
  • Ingenting – git clone har redan kopplat kopian till origin

  • git init --bare <mapp> skapar ett naket fjärr-repository, utan arbetskatalog.
  • git remote add origin <adress> kopplar ditt repository till det. git remote -v visar kopplingen.
  • git push -u origin main skickar main första gången. Sedan räcker git push.
  • git clone <adress> <mapp> hämtar en egen kopia, redan kopplad till origin.