Git

The Magic Code Repository

Innholdsfortegnelse

  • Hva er git?
  • Hvor er git?
  • Hvorfor er git?
  • Hvordan er git?
  • Enkle operasjoner
  • Github og Remotes
  • Branching og Tagging

Hva er git?

Git er et program.

Git skaffes ved:

# apt-get install git

(# betyr root-privilegier)

eller

git-scm.com/download

\begin{aligned} git \neq github \end{aligned}

Hvor er git?

Git ligger i systemet

alt

Terminalen bruker $PATH.

echo %path% på Windows

alt

Git bruker .git mappa.

alt

Hvorfor er git?

Git skal løse et problem:

det er vanskelig å holde styr på en kodebase.

  • Mercurial
  • GNU arch
  • BitKeeper
  • osv...

Men hvorfor velge git over alle de andre?

Kjapt, effektivt, sikkert

Mye brukt i IT-industrien

(Det er fint å ha på CVen)

Hvordan er git?

Git danner en DAG (Directed Acyclic Graph).

  • Head: Den nåværende "state"
  • master: Standard navn på første "branch"
  • null: Navnet til en "state"

Vi lager en ny fil

Filen må 'trackes'

Nå lagrer vi en 'commit'

Det som lå i staged har blitt kopiert til 288177b. Dette navnet er en hash, og er helt random.

Endre innholdet

Vi kan endre innholdet i my_first_file.

Bevege fra work (unstaged) til staged

Enda en commit

kan endre innholdet i my_first_file.

Logg

git log gir en oversikt over alle commits fra der HEAD befinner seg.

De første få tall fra en commit er nok for git å identifisere committen. Vi trenger ikke å skrive ut hele 288177b1a99... 288177b er nok.

Mobilitet

Vi har fullmakt over HEAD, master, staged, work, og untracked. HEAD peker til den committen som du jobber på.

Mobilitet

Mer Mobilitet

Komme tilbake

Git log oppgir ikke 6b08d4b.

Restore

Sjekke forskjellen

Sjekk også ut git log -p.

Legge til endringer

Hva betyr alt dette?

Legge til bare en linje

Differansen

Commit differansen

Resultatet av arbeidet

Husk

Git danner en "DAG".
git init
git status
git add [-p]
git commit [-m "melding" ]
git log [-p]
git checkout "name"
git reset [--hard|--soft] "name"
git diff [--cached]
git reflog

Git i PU

Bruk github

Samle kode i et sted

Sette opp et repo

Sette opp en remote

git remote add origin din_addresse Her var 'din_addresse' https://github.com/BourgondAries/gitpresentation.git

Pushe til remote

Vi kan bevege oss fritt rundt med checkout, reset, add, commit, rm, uten å påvirke hva som skjer på Github.

Kloning

git clone din_link

Kloner hele repoet.

Dersom du allerede har et lokalt repo, og noen har pushet endringer til git, kan du skrive git pull origin master.
Staged bør være tom når du puller.

Branches

Har ingenting med grener å gjøre.
Er en peker som peker til en commit.
master en en branch. Den peker til 5d38f1d.
Pekeren (branch) følger alltid etter committen.

Lage en ny branch

Vi må flytte HEAD

Hvordan gjør vi det?

git stash (lagrer 'noe nytt' i en stack)

eller

git reset --hard HEAD (forkaster 'noe nytt')

(velg gjerne stash), og kjør deretter


git log
git checkout din_andre_commit

Lage en ny branch

Følge Branch

Committing

Å committe er helt som på master branch

Skriv noe til filen my_first_file.

Committing

Du er fri til å hoppe rundt med checkout.

Stashing

Igjen; commit

Hva om vi nå vil ha endringene fra min_branch inni master?

Merging

Merging

Nå er det helt greit å skrive

git push origin master

Merged og Pushed

Log Tre

Tagging

git checkout nice

Committe en Tag

Committe en Tag

Husk

git branch "branch name"
git merge "name"
git log --graph [--oneline]
git tag "name"
git checkout "name"
git reset [--soft|--hard] "name"
git init
git status
git add [-p]
git commit [-m "melding" ]
git log [-p|--graph|--oneline]
git diff [--cached]
git reflog
git "action" --help

Ressurser

Pro-Git : https://git-scm.com/book/en/v2

Pandoc

reveal.js

GraphViz

puush

Markdown