Git

Kā Squash Git apņemas

Kā Squash Git apņemas

Kā skvošs apņemas rīkoties, lai jūsu vēsture būtu tīra

Strādājot ar Git, ieteicams apņemties rīkoties bieži, tāpēc, ja jūs sajaucat, jūs vienmēr varat atgriezties koda stāvoklī. Tomēr visu šo mini izmaiņu veikšana galvenajā filiālē ne vienmēr ir laba ideja. Tas padara vēsturi nesakārtotu un grūti izsekojamu.

Git nodrošina veidu, kā saspiest virkni jūsu saistību, izmantojot komandu rebase. Kad esat lokāli veicis izmaiņas konkrētā failā vai konkrētā objektā, vienmēr varat izmantot skvoša metodi, lai apvienotu izmaiņas, pirms veicat galveno filiāli. Tas palīdzēs citiem labāk izprast jūsu izmaiņas.

Brīdinājums: kaut arī jūs varat iziet no ārējiem krātuvēm un skvošs apņemas kopā, tā ir slikta ideja. Tas var radīt konfliktus un neskaidrības. Izvairieties mainīt vēsturi, kas jau ir publiska. Ievērojiet tikai tādas saistības, kas saistītas ar jūsu darbu.

Izstrādāsim piemēru.

Pieņemsim, ka mums ir divi faili a.py un b.py. Vispirms iesim cauri failu izveidošanas un modifikāciju veikšanas procesam:

$ mkdir myproject
$ cd myproject /
$ git init
$ echo "print (" labdien A ")"> a.py
$ git add -A && git saistīt -m "Pievienots a.py "
$ echo "print (" labdien B ")"> b.py
$ git add -A && git saistīt -m "Pievienots b.py "
$ echo "print (" sveiki BB ")"> b.py
$ git pievienot -A && git izdarīt -m "b.py modifikācija 1 "
$ echo "print (" labdien BBB ")"> b.py
$ git pievienojiet -A && git izdarīt -m "b.py modifikācija 2 "

Ja pārbaudīsim saistību vēsturi, mēs redzēsim:

$ git log --oneline --graph --dekorēt
* dfc0295 (GALVA -> kapteinis) b.py modifikācija 2
* ce9e582 b.py modifikācija 1
* 7a62538 Pievienots b.py
* 952244a Pievienots a.py

Kad mēs esam paveikuši savu darbu, mēs nolemjam visas izmaiņas ievietot b.Pielieciet vienā skaidrībā. Mēs skaitām, ka b ir 3 izdarītas.py no GALVAS. Mēs izsniedzam šādu komandu:

git rebase -i GALVA ~ 3

Opcija -i liek Gitam izmantot interaktīvo režīmu.

Tam vajadzētu uznirst logā uz jūsu Git teksta redaktora:

pick 7a62538 Pievienots b.py
izvēlēties ce9e582 b.py modifikācija 1
izvēlēties dfc0295 b.py modifikācija 2
 
# Pārsūtiet 952244a… dfc0295 uz 952244a (3 komandas (-es))
#
# Komandas:
# p, pick = izmantot apņemšanos
# r, reword = izmantot apņemšanos, bet rediģējiet apņemšanās ziņojumu
# e, edit = use pühend, bet pārtrauciet labošanu
# s, skvošs = izmantot apņemšanos, bet ir iekļauts iepriekšējā saistībā
# f, fixup = patīk "skvošs", taču izmetiet šīs saistības žurnāla ziņojumu
# x, exec = palaist komandu (pārējā rinda), izmantojot čaulu
#
# Šīs rindas var atkārtoti pasūtīt; tie tiek izpildīti no augšas uz leju.
#
# Ja šeit noņemsit rindiņu, TIKS PIEŅEMTA.
#
# Tomēr, ja jūs noņemsit visu, atkārtotā bāze tiks pārtraukta.
#
# Ņemiet vērā, ka tukšās saistības tiek komentētas
~

Saistības ir hronoloģiski uzskaitītas augšpusē no agrākās līdz visjaunākajām. Jūs varat izvēlēties, kuru apņemties “izvēlēties” un kurš apņemas skvošu. Vienkāršības labad mēs izvēlēsimies pirmo apņemšanos, bet pārējos - tajā. Tātad mēs modificēsim tekstu šādi:

pick 7a62538 Pievienots b.py
skvošs ce9e582 b.py modifikācija 1
skvošs dfc0295 b.py modifikācija 2
 
# Pārsūtiet 952244a… dfc0295 uz 952244a (3 komandas (-es))
#
# Komandas:
# p, pick = izmantot apņemšanos
# r, reword = izmantot apņemšanos, bet rediģējiet apņemšanās ziņojumu
# e, edit = use pühend, bet pārtrauciet labošanu
# s, skvošs = izmantot apņemšanos, bet ir iekļauts iepriekšējā saistībā
# f, fixup = patīk "skvošs", taču izmetiet šīs saistības žurnāla ziņojumu
# x, exec = palaist komandu (pārējā rinda), izmantojot čaulu
#
# Šīs rindas var atkārtoti pasūtīt; tie tiek izpildīti no augšas uz leju.
#
# Ja šeit noņemsit rindu, TIKS PĀRSKATĪTS.
#
# Tomēr, ja jūs noņemsit visu, atkārtotā bāze tiks pārtraukta.
#
# Ņemiet vērā, ka tukšās saistības tiek komentētas

Tiklīdz saglabājat un aizverat teksta failu, vajadzētu parādīties vēl vienam teksta logam, kas izskatās šādi:

# Šī ir 3 saistību kombinācija.
# Pirmais apņemšanās ziņojums ir:
Pievienots b.py
 
# Šis ir otrais apņemšanās ziņojums:
 
b.py modifikācija 1
 
# Šis ir trešais apņemšanās ziņojums:
 
b.py modifikācija 2
 
# Lūdzu, ievadiet saistību ziņojumu par izmaiņām. Līnijas sākas
# ar '#' tiks ignorēts, un tukšs ziņojums pārtrauc apņemšanos.
#
# Datums: piektdiena, 30. marts, 21:09:43, 2018 -0700
#
# atkārtota darbība notiek; uz 952244a
# Jūs pašlaik rediģējat apņemšanos, vienlaikus atkārtoti veicot filiāles “master” atiestatīšanu uz “952244a”.
#
# Izpildāmās izmaiņas:
# Jauns fails: b.py
#

Saglabājiet un aizveriet arī šo failu. Jums vajadzētu redzēt kaut ko līdzīgu šim:

$ git rebase -i GALVA ~ 3
[atdalīts HEAD 0798991] Pievienots b.py
Datums: piektdiena, 30. marts, 21:09:43, 2018 -0700
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 b.py
Veiksmīgi pārbāzēts un atjaunināts refs / heads / master.

Ja tagad pārbaudīsit saistību vēsturi:

$ git log --oneline --graph --dekorēt
* 0798991 (HEAD -> master) Pievienots b.py
* 952244a Pievienots a.py

Visas saistības par b.py ir salikti vienā izdarīšanā. To var pārbaudīt, apskatot b.py fails:

$ kaķis b.py
izdruka ("sveiki BBB")

Tam ir 2. modifikācijas saturs.

Secinājums

Rebase ir spēcīga komanda. Tas var palīdzēt saglabāt vēstures tīrību. Bet izvairieties to izmantot jau publiskām saistībām, jo ​​tas var izraisīt konfliktus un neskaidrības. Izmantojiet to tikai savam vietējam repozitorijam.

Turpmāka izpēte:

Pievienojiet peles žestus operētājsistēmai Windows 10, izmantojot šos bezmaksas rīkus
Pēdējos gados datori un operētājsistēmas ir ievērojami attīstījušās. Bija laiks, kad lietotājiem bija jāizmanto komandas, lai pārvietotos pa failu pār...
Kontrolējiet un pārvaldiet peles kustību starp vairākiem monitoriem sistēmā Windows 10
Dual Display Mouse Manager ļauj kontrolēt un konfigurēt peles kustību starp vairākiem monitoriem, palēninot tās kustību robežas tuvumā. Windows 10/8 ļ...
WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...