summaryrefslogtreecommitdiff
path: root/1.md
diff options
context:
space:
mode:
authorEkaitz Zarraga <ekaitz@elenq.tech>2022-05-23 17:31:16 +0200
committerEkaitz Zarraga <ekaitz@elenq.tech>2022-05-23 17:31:16 +0200
commit3887410dd909d5c29dc8046ce1b32759fa271a15 (patch)
treecba4f126d168f71e8f2940e361f77601c4da101c /1.md
parentc15cc661ef455cf48de7b9f06e633d5ac4d8d4c2 (diff)
Start with git branching
Diffstat (limited to '1.md')
-rw-r--r--1.md94
1 files changed, 94 insertions, 0 deletions
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 <branchname>`
+
+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 <branchname>`
+- `git checkout -b <branchname>` adarra eratu eta aldatzeko
+
+Bertsio berrietan, `checkout` komanduak gauza gehiegi egiten dituenez, komando
+espezifiko bat eratu zen adarrekin lan egiteko:
+
+- `git switch <branchname>`
+- `git switch -c <branchname>` 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.