SkillAgentSearch skills...

Git

Git guide in Icelandic

Install / Use

/learn @gaui/Git
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Git leiðbeiningar á íslensku

Þessar leiðbeiningar eru miðaðar fyrir byrjendur sem vilja læra á Git. Ef þið sjáið villur eða viljið bæta einhverju við, endilega sendið PR (Pull Request).

Ég er búinn að vera að halda utan um Git leiðbeiningar í PDF-formi hér en ákvað að deila þessu og leyfa fólki að bæta við og breyta - og hvað er betra til þess en Git, GitHub og Markdown?

Sækja Git

Hægt er að sækja Git fyrir öll helstu stýrikerfin á http://git-scm.com.

Mac OS X

Þægilegasta leiðin til að setja upp Git á Mac (og halda utan um uppfærslur) er í gegnum Homebrew, en það er tól sem gerir manni kleift að halda utan um pakka/tól fyrir Mac. Eftir að brew hefur verið sett upp þarf einfaldlega að keyra brew install git. Til að sækja uppfærslur keyrir maður brew upgrade git

Hvað er Git?

Git er kerfi fyrir dreifða útgáfustjórn (e. distributed revision control system). Ólíkt öðrum kerfum getur Git séð um útgáfustjórn án viðkomu servers. Önnur kerfi eins og SVN, TFS (TFVC), o.s.frv. eru miðstýrð (e. centralized) sem þýðir að útgáfustýringin er á miðlægum server.

Git er hugbúnaður sem búinn til var af Linus Torvalds, höfundi Linux stýrikerfisins. Linus bjó til Git til að sjá um útgáfustjórn fyrir Linux kernelinn, en gaf það svo út á endanum til almennings. Git er í dag vinsælasta kerfið til að sjá um útgáfustjórnun.

Fyrir þá sem vilja kynna sér Git undir húddinu geta lesið nánar hér.

Uppsetning

Eftir uppsetningu á Git fyrir Windows er opnað Git Bash, sem er skel fyrir Git. Ef Git er sett upp fyrir Linux/Mac er ekki þörf á Git Bash, þar sem notuð er skelin sem fylgir stýrikerfinu.

Áður en við byrjum er gott að setja inn nafn og netfang, sem fest verður við allar breytingar sem þú gerir.

Skipanirnar eru eftirfarandi:

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

Nýtt repository

Til að byrja útgáfustjórn með Git er búin til svokölluð geymsla (e. repository). Þetta er mappan sem inniheldur t.d. allan kóðann þinn sem þú vilt útgáfustýra.

Til að búa til nýtt repository ferðu í möppu sem þú vilt útgáfustýra og skrifar inn eftirfarandi skipun:

git init

Þá er mappan orðin að Git repository. Flóknara er það ekki.

.gitignore

Þegar kóði er útgáfustýrður og repository er deilt með öðrum forriturum, vill maður oft sleppa ákveðnum skrám. Dæmi um slíkar skrár eru t.d. binary og auto-generated skrár:

  • IDE config fyrir notandann
  • Loggar
  • Compiled binary (bin, obj, o.s.frv.)
  • o.s.frv.

Þá kemur .gitignore skráin að góðum notum. Git hunsar allar skrár í þessari skrá, nema þeim hafi verið bætt við áður en .gitignore skráin var búin til (þar sem Git er byrjað að tracka skránna). En þá er hægt að keyra git rm --cached <file> til að eyða skránni úr Git, en sleppa því að eyða skránni úr Working Directory.

Best er að búa til .gitignore skránna í rótinni á repository'inu (þar sem .git mappan er staðsett).

GitHub heldur úti sér repository fyrir .gitignore template sem má finna hér.

Git högun

Local vs. Remote

  • Commit eru breytingar sem þú gerir local á þinni tölvu
  • "Ég er búinn að committa breytingunum"
  • Push eru local breytingarnar þínar, færðar yfir á server/remote
  • "Ég er búinn að pusha breytingunum"

Flæði

Flæðið er í stuttu máli eftirfarandi:

  • Working Directory (Untracked)
  • Staging Area (Index)
  • Local Repository
  • Remote Repository (origin)

Git diagram

Til að líkja Git saman við eitthvað í raunveruleikanum þá má líkja því saman við skrif á bók:

  • Working Directory (Untracked)
  • Þú byrjar að skrifa á fullu og býrð til drög/uppköst sem þú ýmist vistar eða hendir.
  • Staging Area (Index) - git add
  • Þú tekur saman það sem þú vilt gefa út og setur í umslag.
  • Local Repository - git commit
  • Þú setur umslagið í kassa með einkvæmum merkimiða ásamt lýsingu, dagsetningu og höfundi verksins.
  • Remote Repository - git push
  • Þú sendir kassann til ritstjórnar/útgefanda.

SSH

Þegar átt eru samskipti við server (remote) er oft notað SSH. SSH samskipti eru dulkóðuð og mjög örugg.

Til þess að geta átt örugg samskipti við servera eins og t.d. GitHub þarf maður að auðkenna sig gagnvart honum. Gengið er í gegnum ferlið einu sinni (fyrir hverja tölvu) og er það eftirfarandi:

Commit

Hvert commit í Git er með upplýsingar um hvernig repository'ið (Working Directory) lítur út á þeim tíma. Í hverju committi eru upplýsingar um höfund þess og dagsetningu. Hvert commit fær einkvæmt SHA1 hash gildi, eins konar kennimerki (e. identifier) fyrir committið.

Commit í Git eru með pointer á committið þar á undan (parent commit). Þannig er sagan uppbyggð í Git. Eins og sjá má á neðangreindri mynd.

git commit

Branch

Brönch í Git eru bendar (e. pointer) á tiltekin commit. Git er allt byggt á pointerum.

Pointers

Á myndinni hér fyrir ofan má sjá eftirfarandi:

  • HEAD pointerinn bendir á master pointerinn
  • master pointerinn bendir svo á C2 committið
  • test pointerinn bendir á T1 committið
  • C1 er fyrsta committið
  • T1 committið var búið til út frá C2 (C2 er parent T1)
  • C2 comittið var búið til út frá C1 (C1 er parent C2)
  • Þegar þú gerir checkout master ertu á C2 committinu
  • Þegar þú gerir checkout test ertu á T1 committinu

HEAD

Í Git er bendir (e. pointer) sem ber heitið HEAD. Þessi pointer færist í hvert skipti sem þú ferð á nýjan stað í repository'inu (notar git checkout skipunina). Þetta er því í raun bendir á þann stað sem þú ert staddur á núna.

Detached HEAD

Þetta er þegar HEAD pointerinn bendir ekki á tiltekið branch, heldur á tiltekið commit í Git.

Segjum að þú farir á committið á undan master, þá ertu kominn með detached HEAD.

Skipanir

Hér fyrir neðan er yfirlit yfir helstu skipanir í Git.

git init

Þetta býr til nýtt repository og er upphafið á öllu.

Initialized empty Git repository in c:/Users/gaui/Desktop/test/.git/

git status

Þetta er mest notaðasta skipunin í Git. Hún sýnir á hvaða branchi þú ert ásamt öllum breytingum sem hafa verið gerðar frá síðasta committi. Sýnir hvaða skrá eru untracked (ekki verið að fylgjast með), hvaða skrám hefur verið breytt/eytt ásamt því hvaða breytingar hafa verið staged (gerðar tilbúnar fyrir commit).

git status

Á myndinni hér fyrir ofan er:

  • baz.txt breytt og sú breyting hefur verið staged (tilbúin fyrir commit).
  • bar.txt eytt en sú breyting hefur ekki verið staged.
  • foo.txt breytt sú breyting hefur ekki verið staged.
  • smuu.txt bætt við, en Git er ekki að fylgjast með henni (untracked).

git checkout

Í Git er bendir (e. pointer) sem ber heitið HEAD. Þessi pointer færist í hvert skipti sem þú ferð á nýjan stað í repository'inu - og til þess notaru þessa skipun.

git checkout <branch>

Færir þig yfir á branch og færir um leið HEAD pointerinn.

git checkout -b <branch>

Býr til nýtt branch og færir þig yfir á það.

git add

Bæta við skrá/möppu í Staging Area (Index) þannig breytingin verði tilbúin fyrir commit. Eins og á myndinni hér fyrir ofan var baz.txt bætt við í Staging Area.

git add <file>

Tiltekinni skrá bætt við í Staging Area.

git add .

Öllum skrám/breytingum bætt við í Staging Area.

git add -u

Bæta við öllum eyddum skrám í Staging Area.

git add -p

Leyfir þér að velja hvaða breytingar þú vilt setja í Staging Area. Segjum að þú gerir þrjár breytingar í sömu skránni. Þú getur stage'að tveimur af þessum þremur breytingum í skránni.

git reset

Þessi skipun skiptist í þrjá parta; mixed, soft og hard. Default er --mixed

git reset --mixed

Þessi skipun er defaultið þegar þú skrifar bara git reset. Þetta endurstillir Staging Area (Index) og breytir ekki Working Directory.

Þetta er t.d. gagnlegt þegar þú vilt taka skrár úr Staging Area (Index).

git reset --soft

Þessi skipun endurstillir ekki Staging Area (Index) og breytir ekki Working Directory.

Þetta er t.d. gagnlegt þegar þú vilt setja mörg local commit í eitt, þar sem þetta hreyfir hvorki við Staging Area (Index) né Working Directory.

Dæmi:

* da883dc (HEAD, master) Three
* 92d3eb7 Two
* c6e82d3 One
* e1e8042 Start here

git reset --soft e1e8042
git log --oneline

* e1e8042 Start here
git commit

Þarna er öllum breytingunum komið fyrir í e1e8042 (Start here) committinu, og þú getur pushað því sem einu committi og sleppt þessum þremur auka.

git reset --hard <commit>

Þetta breytir Working Directory alveg eins og í committinu sem þú tilgreinir.

Þetta er notað mest til að bakka með allar breytingar sem þú hefur gert síðan síðasta commit.

Þetta er hættuleg aðgerð og getur haft alvarlegar afleiðingar í för með sér.

Ekki nota þetta ef þú ert búinn að pusha á server.

git revert <commit>

Þessi skipun er notuð til þess að bakka með breytingar sem búið er að pusha á server. Hún býr til nýtt commit þar sem öllum breytingunum í committinu er snúið við. + verður - og - verður +

git commit

Býr til nýtt commit í local repository með staged breytingum.

git commit -m "Commit Message"

Býr til nýtt commit í local repository með staged breytingum ásamt skilaboðunum "Commit Message".

$ git commit -m "Commit Message"
[master f4b8f86] Commit Message
2 files changed, 2 insertions(+), 2 deletions(-)

git remote

Remote er vísun

View on GitHub
GitHub Stars36
CategoryDevelopment
Updated2y ago
Forks6

Security Score

60/100

Audited on Jan 14, 2024

No findings