Skapa nytt repo i detalj

Vi skall nu titta lite mer i detalj vad som händer när vi skapar ett nytt Git repo.

Skapa en ny katalog

För att skapa ett nytt repo navigerar du i terminalen till den katalog du vill göra till ett repo. Sedan utför du kommandot git init. I följande exempel skapas först katalogen git-init-test med kommandot mkdir.

 $> mkdir git-init-test

Kliv in i den nya katalogen

Använd kommandot cd för att gå in i den nya katalogen.

$> cd git-init-test

Kika om katalogen är tom

Vi kan använda kommandot tree för att se om den nya katalogen är tom.

$> tree

Mycket riktigt är katalogen tom.

.

0 directories, 0 files

Initiera ett nytt Git repo

Nu initierar vi ett nytt Git repo i den nya katalogen med kommandot git init.

 $> git init

Om det går bra svarar Git med något liknade detta.

Initialized empty Git repository in ~/git-init-test/.git/

Notera .git på slutet av sista raden ovan. Vi kommer återkomma till .git alldeles strax.

Kolla om katalogen fortfarande tom

Vi prövar igen med kommandot tree för att se om katalogen fortfarande är tom.

$> tree

Konstigt, katalogen verkar fortfarande tom.

Git har lagt till en dold katalog

Att katalogen fortfarande verkar vara tom beror på att Git lagt till en dold underkatalog. I Linux börjar namnet på alla dolda kataloger med .. När i skapade det nya repot talade Git om följande för oss.

Initialized empty Git repository in ~/git-init-test/.git/

Detta betyder att Git lagt till den dolda katalogen .git som underkatalog till katalogen git-init-test som vi skapat ett nytt repo i. För att tree skall ta med även dolda kataloger behöver vi lägga till flaggan -a (view all). Genom att även lägga till flaggan -F kommer symbolen / att läggas till efter namnet på kataloger så vi enkelt kan skilja på vanliga filer och kataloger.

$> tree -a -V

Nu ser vi den dolda katalogen .git och alla mappar och filer som ligger under katalogen .git som ett träd.

.
└── .git/
    ├── branches/
    ├── config
    ├── description
    ├── HEAD
    ├── hooks/
    │   ├── applypatch-msg.sample*
    │   ├── commit-msg.sample*
    │   ├── fsmonitor-watchman.sample*
    │   ├── post-update.sample*
    │   ├── pre-applypatch.sample*
    │   ├── pre-commit.sample*
    │   ├── prepare-commit-msg.sample*
    │   ├── pre-push.sample*
    │   ├── pre-rebase.sample*
    │   ├── pre-receive.sample*
    │   └── update.sample*
    ├── info/
    │   └── exclude
    ├── objects/
    │   ├── info/
    │   └── pack/
    └── refs/
        ├── heads/
        └── tags/

10 directories, 15 files

Det är med hjälp av innehållet i den dolda katalogen .git som Git håller reda på staging area och historiken för repot. Ett Git repo är en helt vanligt katalog och det som gör det till ett Git repo är allt innehåll i den dolda mappen .git. Av innehållet i den dolda katalogen .git kan vi lägga på minnet att det finns en underkatalog som heter branches (grenar).

Kolla status

Vi prövar att se vad som händer om vi kollar status på vårt nya repo.

$> git status

Eftersom vi varken lagt till några filer gjort några commits svarar Git så här.

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

Kolla loggen

Vi provar att se om det finns något i loggen.

$> git log

Som väntat finns inget att visa i loggen.

fatal: your current branch 'master' does not have any commits yet

Vad händer om man tar bort .git?

Tar man bort katalogen .git kommer alla vanliga filer och mappapar i katalogen git-init-test fortfarande att finnas kvar. Det enda som försvinner är all information om Git repot med all historik och annan information som Git använder sig av.

Vi tar bort katalogen .git med kommandot rm (remove). Vi behöver lägga till flaggan -r för att rekursivt ta bort alla underkataloger under .gitoch -f för att slippa svara ja/nej för varje fil/mapp som tas bort.

$> rm -rf .git

Vi prövar igen med git status och git log.

$> git status

Du bör nu se något liknade detta i terminalen.

fatal: not a git repository (or any of the parent directories): .git

Vi prövar med git log igen.

$> git log

Du bör nu se något liknade detta i terminalen.

fatal: not a git repository (or any of the parent directories): .git

Efter att vi tagit bort .git kan katalogen git-init-test inte längre fungera som ett Git repo.