Git

Kuidas Squash Git kohustusi teha

Kuidas Squash Git kohustusi teha

Kuidas Squash Gitis kohustub oma ajalugu puhtana hoidma

Kui te töötate Gitiga, on hea pühenduda sageli, nii et võite segi ajada alati koodi olekusse tagasi. Kuid kõigi nende mini-muudatuste tegemine põhiharu jaoks pole alati hea mõte. See muudab ajaloo segaseks ja raskesti jälgitavaks.

Git pakub viisi rebase-käsu abil hunnik teie toiminguid. Kui olete konkreetses failis või konkreetses funktsioonis kohapeal muudatused teinud, võite enne peaharule pühendumist muudatuste ühendamiseks alati kasutada squash-meetodit. See aitab teistel teie muudatustest paremini aru saada.

Hoiatus: Ehkki saate välistest hoidlatest välja tõmmata ja squash üheskoos toimib, on see halb mõte. See võib tekitada konflikte ja segadust. Vältige juba avalikuks muutunud ajaloo muutmist. Püsi ainult nende tööde jaoks kohalike prügikohtade puhul.

Vaatame läbi ühe juhtumi.

Oletame, et meil on kaks faili a.py ja b.py. Vaatame kõigepealt läbi failide loomise ja muudatuste tegemise:

$ mkdir myproject
$ cd myproject /
$ git init
$ echo "print (" tere A ")"> a.py
$ git add -A && git toime -m "Lisatud a.py "
$ echo "print (" tere B ")"> b.py
$ git add -A && git toime -m "Lisatud b.py "
$ echo "print (" tere BB ")"> b.py
$ git lisa -A && git pühendu -m "b.py modifikatsioon 1 "
$ echo "print (" tere BBB ")"> b.py
$ git lisa -A && git pühendu -m "b.py modifikatsioon 2 "

Kui kontrollime kulukohustuste ajalugu, näeme järgmist:

$ git log --oneline --graaf --dekoratsioon
* dfc0295 (HEAD -> master) b.py modifikatsioon 2
* ce9e582 b.py muutmine 1
* 7a62538 Lisatud b.py
* 952244a Lisatud a.py

Kui oleme oma tööga valmis, otsustame kõik muudatused panna b-le.Py selguse huvides ühtseks kohustuseks. Me loeme, et b-l on 3 toimingut.py peast. Anname välja järgmise käsu:

git rebase -i PEA ~ 3

Valik -i käsib Gitil kasutada interaktiivset režiimi.

See peaks ilmuma teie Giti tekstiredaktorisse akna:

vali 7a62538 Lisatud b.py
vali ce9e582 b.py muutmine 1
vali dfc0295 b.py modifikatsioon 2
 
# Alustage 952244a ... dfc0295 952244a peale (3 käsku)
#
# Käsku:
# p, vali = kasuta pühendumist
# r, reword = kasuta pühendumist, kuid redigeeri pühendamissõnumit
# e, edit = kasuta pühendumist, kuid muutmise tegemiseks peata
# s, squash = kasuta pühendumist, kuid sulandub eelmisse pühendusse
# f, fixup = nagu "squash", kuid visake selle toimingu logisõnum ära
# x, exec = käsk run (ülejäänud rida) shelliga
#
# Neid ridu saab uuesti tellida; neid hukatakse ülevalt alla.
#
# Kui eemaldate siin joone, siis kaob see kohustus.
#
# Kui aga kõik eemaldate, katkestatakse taaskäivitamine.
#
# Pange tähele, et tühje kulukohustusi kommenteeritakse
~

Kulukohustused on üleval kronoloogiliselt loetletud varasemast kõige uuemani. Saate valida, mis kohustub "valima" ja milline kohustub squashima. Lihtsuse huvides valime esimese kohustuse ja pigistame ülejäänud selle sisse. Nii et me muudame teksti järgmiselt:

vali 7a62538 Lisatud b.py
kõrvits ce9e582 b.py muutmine 1
kõrvits dfc0295 b.py modifikatsioon 2
 
# Alustage 952244a ... dfc0295 952244a peale (3 käsku)
#
# Käsku:
# p, vali = kasuta pühendumist
# r, reword = kasuta pühendumist, kuid redigeeri pühendamissõnumit
# e, edit = kasuta pühendumist, kuid muutmise tegemiseks peata
# s, squash = kasuta pühendumist, kuid sulandub eelmisse pühendusse
# f, fixup = nagu "squash", kuid visake selle toimingu logisõnum ära
# x, exec = käsk run (ülejäänud rida) shelliga
#
# Neid ridu saab uuesti tellida; neid hukatakse ülevalt alla.
#
# Kui eemaldate siin rida, siis kaob see kohustus.
#
# Kui aga kõik eemaldate, siis rebase katkestatakse.
#
# Pange tähele, et tühje kulukohustusi kommenteeritakse

Niipea kui tekstifail salvestate ja sulgete, peaks ilmuma järgmine tekstiaken, mis näeb välja selline:

# See on 3 kohustuse kombinatsioon.
# Esimese pühendunud sõnum on:
Lisatud b.py
 
# See on 2. pühendumissõnum:
 
b.py muutmine 1
 
# See on kolmas pühendumissõnum:
 
b.py modifikatsioon 2
 
# Sisestage muudatuste tegemise teade. Liinid algavad
Tähist "#" ignoreeritakse ja tühi kiri peatab kohustuse.
#
# Kuupäev: Reede 30. märts 21:09:43 2018 -0700
#
# uuesti alustamine on pooleli; peale 952244a
# Muudate praegu kohustust, samal ajal kui filiaali „master” taaskäivitate saidil „952244a”.
#
# Tehtavaid muudatusi:
# Uus fail: b.py
#

Salvestage ja sulgege ka see fail. Peaksite nägema midagi sellist:

$ git rebase -i PEA ~ 3
[eraldatud HEAD 0798991] Lisatud b.py
Kuupäev: Reede 30. märts 21:09:43 2018 -0700
1 fail muudetud, 1 sisestus (+)
loomisrežiim 100644 b.py
Refs / heads / master edukalt alustatud ja uuendatud.

Kui kontrollite toimingute ajalugu kohe:

$ git log --oneline --graaf --dekoratsioon
* 0798991 (HEAD -> master) Lisatud b.py
* 952244a Lisatud a.py

Kõik pühenduvad b-le.py on kokku pandud üheks kohustuseks. Kontrollimiseks võite vaadata b.py-fail:

$ kass b.py
trükk ("tere BBB")

Sellel on muudatuse 2 sisu.

Järeldus

Rebase on võimas käsk. See võib aidata teil oma ajalugu puhtana hoida. Kuid vältige selle kasutamist juba avalike kohustuste jaoks, kuna see võib tekitada konflikte ja segadust. Kasutage seda ainult oma kohaliku hoidla jaoks.

Edasine uuring:

Lahing Wesnothi eest 1.13.6 Areng vabastati
Lahing Wesnothi eest 1.13.6 ilmus eelmisel kuul, on 1-s kuues arendusversioon.13.x-seeria ja see pakub mitmeid täiustusi, eelkõige kasutajaliidese ja ...
League of Legendsi installimine Ubuntu 14-le.04
Kui olete League of Legends fänn, siis on see teile võimalus proovida League of Legendsit. Pange tähele, et LOL-i toetab PlayOnLinux, kui olete Linuxi...
Installige uusim OpenRA strateegiamäng Ubuntu Linuxi
OpenRA on tasuta / tasuta reaalajas strateegiamängumootor, mis loob uuesti Westwoodi varased mängud nagu klassikaline Command & Conquer: Red Alert. Ja...