From 5f58d45d4bcb3e9b4043bfa8b17c50e1e46245e4 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Tue, 31 May 2022 13:05:18 +0200 Subject: reset and checkout --- 2.md | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) (limited to '2.md') diff --git a/2.md b/2.md index 48220fa..f3f3583 100644 --- a/2.md +++ b/2.md @@ -275,40 +275,150 @@ trantsizioak ondo ulertu behar dira. Hiru egoera posible daude: ## Reset eta checkout sakonki — III +Grafikoki aztertuz. Repositorio hutsarekin hasita: + ![ ](img/reset-ex1.png) ## Reset eta checkout sakonki — IV +Fitxategi bat *indexera* gehitu: + ![ ](img/reset-ex2.png) ## Reset eta checkout sakonki — V +Fitxategia repositorioan idatzi: + ![ ](img/reset-ex3.png) ## Reset eta checkout sakonki — VI +Fitxategia aldatu: + ![ ](img/reset-ex4.png) ## Reset eta checkout sakonki — VII +Aldaketak *indexera* bidali: + ![ ](img/reset-ex5.png) ## Reset eta checkout sakonki — VIII +Commit berria gehitu: + ![ ](img/reset-ex6.png) ## Reset eta checkout sakonki — IX -![Commit gehiago gehituta](img/reset-start.png) +Beste commit bat gehituta: + +![ ](img/reset-start.png) ## Reset eta checkout sakonki — IX +`--soft`: + ![ ](img/reset-soft.png) ## Reset eta checkout sakonki — X +`--mixed` (defektuz egiten da): + ![ ](img/reset-mixed.png) ## Reset eta checkout sakonki — XI +`--hard`: + ![ ](img/reset-hard.png) + +## Reset eta checkout sakonki — XII + +Hiru aukeraz aparte, `git reset`-i fitxategi bat sartu ahal zaio. + +Kasu horretan, lehenengo pausua (HEAD-a mugitzea) ezin da burutu[^head] baina +hurrengo pausuak arazo barik egin daitezke. Horrek funtzionamendu +interesgarriak ahalbidetzen ditu. + +- `git reset ` egiten denean, benetan + `git reset --mixed HEAD ` egiten da. + 1. ~~HEAD-a mugitu~~ + 2. Aldaketak indexean jarri + + Hau da: **Fitxategia indexetik atera** + +[^head]: HEADa ezin da erdizka mugitu, edo repositorio osorako mugitzen da edo + ez da mugitzen. + +## Reset eta checkout sakonki — XIII + +Grafikoki: + +![ ](img/reset-path1.png) + + +## Reset eta checkout sakonki — XIV + +Adibide konplexuago bat: `git reset -- ` + +1. HEAD-a ezin da mugitu +2. ``-k ``-en daukan egoera indexera sartzen da (`--mixed`). + +![ ](img/reset-path3.png){height=220px} + + +## Reset eta checkout sakonki — XV + +Ikusitakoa *squash* (commit batzuk bakarrean batu) egiteko erabili +daiteke[^rebase-interactive]. + +- `git reset --soft HEAD~` egitean HEADa atzera eraman daiteke, indexean + aldaketak mantenduz. `git commit` eginda, aldaketak repositorioan idatzi + daitezke, denak **commit bakarrean**. + +[^rebase-interactive]: Beste aukera `git rebase --interactive|-i` erabiltzea da + +## Reset eta checkout sakonki — XVI + +Grafikoki: + +![ ](img/reset-squash-r1.png) + +## Reset eta checkout sakonki — XVII + +HEADa mugitu aldaketak indexean mantenduz: + +![ ](img/reset-squash-r2.png) + +## Reset eta checkout sakonki — XIX + +Commit berria sartu aldaketa guztiekin batera eginda + +![ ](img/reset-squash-r3.png) + +## Reset eta checkout sakonki — XX + +`checkout` eta `reset` antzekoak dira, baina ez dira berdinak: + +- `git checkout`-ek ez du HEADa eraldatzen. HEAD erreferentzia non apuntatzen + duen aldatzen du, ez du azpian dagoen adarra aldatzen. + +- `git checkout ` eta `git reset --hard ` ia berdinak dira + baina `checkout`ek ez ditu aldaketak zuzenean zapaltzen. + +- `git checkout ` fitxategian zeuden aldaketak **zapaltzen ditu** + *working directory*an, `git reset --hard`en antzera. KONTUZ + +Bietan `--patch` erabili daiteke zatika egiteko. + + +## Reset eta checkout sakonki — XXI + +`git checkout` vs `git reset`en efektua HEADan: + +![ ](img/reset-checkout.png) + + + +## Merge aurreratuak — I -- cgit v1.2.3