diff options
author | Ekaitz Zarraga <ekaitz@elenq.tech> | 2022-05-23 17:31:16 +0200 |
---|---|---|
committer | Ekaitz Zarraga <ekaitz@elenq.tech> | 2022-05-23 17:31:16 +0200 |
commit | 3887410dd909d5c29dc8046ce1b32759fa271a15 (patch) | |
tree | cba4f126d168f71e8f2940e361f77601c4da101c /1.md | |
parent | c15cc661ef455cf48de7b9f06e633d5ac4d8d4c2 (diff) |
Start with git branching
Diffstat (limited to '1.md')
-rw-r--r-- | 1.md | 94 |
1 files changed, 94 insertions, 0 deletions
@@ -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. |