From 3887410dd909d5c29dc8046ce1b32759fa271a15 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Mon, 23 May 2022 17:31:16 +0200 Subject: Start with git branching --- 1.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) (limited to '1.md') diff --git a/1.md b/1.md index 652f157..0e0ec95 100644 --- a/1.md +++ b/1.md @@ -302,3 +302,97 @@ git config --global alias.lg log --graph \ # Git aurreratua: Adarrak + +## Adarrak (*branch*) + +Adarrek repositorioaren garapenean beste bide bat hartzea ahalbidetzen dute, +bertan bide nagusian aldaketarik eragin gabe lan egiteko. + +Git adarrak erabiltzeko diseinatuta dago eta haien erabilera sustatzen du. +Beraz, **oso garrantzitsuak** dira. + +Beste bertsio kontrol sistema batzuetan adarrak erabiltzea prozesu astuna da, +errekurtso asko behar dituena. Git-en oso prozesu simplea da eta ez du ia +errekurtsorik behar. Git-en bitartez kudeatzen diren proiektuetan ez da arraroa +ehundaka adar ikustea. + +## Git barrutik + +- Fitxategiak *Staging Area*ra bidaltzean, Git-ek haien argazkiak gordetzen + ditu *blob* objetu moduan eta haien checksuma kalkulatzen du (SHA-1) +- Commita egiterakoan direktorio bakoitzaren checksuma kalkulatzen du eta + *tree* objetu bat gordetzen du direktorio bakoitzeko. *Tree* objetuak, *blob* + objetuetara apuntatzen duten punteroak dituzte. Gainera commitek beste datuak + gordetzen dituzte: autorea, mezua, data... +- Commit berri bat gehitzean bere commit gurasoei apuntatzen du: punterorik ez + dauka lehengo commita bada, puntero bakarra dauka commit normaletan eta + puntero asko ditu *merge* commiten kasuan. + +Adarrak commitetara apuntatzen duten puntero mugikorrak dira. + +## Git barrutik + +![Git repositorio baten barne datuak](img/commit-and-tree.png) + +## Git barrutik + +![Git repositorio baten commit estruktura](img/commits-and-parents.png) + +## Adarrak eratzeko + +- `git branch ` + +Defektuz `master` deitutako adar bat dago. Izena konfiguragarria da, baina +gutxienez adar bat egon behar da beti, bertan commitak gehitzen direlako. + +Git-ek oraingo adarrera apuntatzen duen erreferentzia bat gordetzen du: `HEAD` +deiturikoa. + +## Adarraz aldatzeko + +- `git checkout ` +- `git checkout -b ` adarra eratu eta aldatzeko + +Bertsio berrietan, `checkout` komanduak gauza gehiegi egiten dituenez, komando +espezifiko bat eratu zen adarrekin lan egiteko: + +- `git switch ` +- `git switch -c ` adarra eratu eta aldatzeko +- `git switch -` aurreko adarrera bueltatzeko + +## Adarrak eta aldaketak — I + +![`git branch testing`](img/head-to-master.png) + +## Adarrak eta aldaketak — II + +![`git checkout testing`](img/head-to-testing.png) + +## Adarrak eta aldaketak — III + +![`git commit ...`](img/advance-testing.png) + +## Adarrak eta aldaketak — IV + +![`git checkout master`](img/checkout-master.png) + +## Adarrak eta aldaketak — V + +![`git commit ...`](img/advance-master.png) + +## Adarrak eta aldaketak — VI + +Giten interfazetik ikusita: + +``` +$ git log --oneline --decorate --graph --all +* c2b9e (HEAD, master) Made other changes +| * 87ab2 (testing) Made a change +|/ +* f30ab Add feature #32 +* 34ac2 Fix bug #1328 +* 98ca9 initial commit +``` + +> KONTUZ: Ez bada `--all` egiten ez dira defektuz adar guztiak bistaratzen `git +> log`-en bitartez. -- cgit v1.2.3