Git

Kaip sutvarkyti skvošą

Kaip sutvarkyti skvošą

Kaip skvošas įsipareigoja „Git“, kad jūsų istorija būtų švari

Kai dirbate su „Git“, patartina įsipareigoti dažnai, todėl, jei sujauksite, visada galite grįžti į kodo būseną. Tačiau atlikti visus tuos mini pakeitimus pagrindinėje šakoje ne visada yra gera mintis. Tai daro istoriją netvarkinga ir sunkiai sekama.

„Git“ suteikia galimybę sutraukti daugybę jūsų įsipareigojimų naudojant komandą „rebase“. Kai lokaliai atliksite tam tikro failo arba tam tikros funkcijos pakeitimus, visada galite naudoti skvošo metodą, kad sujungtumėte pakeitimus, prieš prisiimdami pagrindinę šaką. Tai padės kitiems geriau suprasti jūsų pakeitimus.

Įspėjimas: net jei galite pasiimti iš išorinių saugyklų ir moliūgai įsipareigoja kartu, tai yra bloga idėja. Tai gali sukelti konfliktus ir painiavą. Venkite keisti istoriją, kuri jau yra vieša. Laikykitės tik tų darbų, kurie jūsų darbe yra vietiniai.

Panagrinėkime pavyzdinį atvejį.

Tarkime, mes turime dvi bylas a.py ir b.py. Pirmiausia pereikime failų kūrimo ir modifikavimo procesą:

$ mkdir myproject
$ cd myproject /
$ git init
$ echo "print (" labas A ")"> a.py
$ git pridėti -A && git įsipareigoti -m "Pridėta a.py "
$ echo "print (" labas B ")"> b.py
$ git pridėti -A && git įsipareigoti -m "Pridėta b.py "
$ echo "print (" labas BB ")"> b.py
$ git pridėti -A && git įsipareigoti -m "b.py modifikacija 1 "
$ echo "print (" labas BBB ")"> b.py
$ git pridėti -A && git įsipareigoti -m "b.py modifikacija 2 "

Jei patikrinsime įvykdytų įvykių istoriją, pamatysime:

$ git log --oneline --graph --dekoruoti
* dfc0295 (GALVA -> meistras) b.py modifikacija 2
* ce9e582 b.py modifikacija 1
* 7a62538 Pridėta b.py
* 952244a Pridėta a.py

Baigę darbą nusprendžiame visus pakeitimus pritaikyti b.py į vieną įsipareigojimą dėl aiškumo. Skaičiuojame, kad b yra 3 įvykdymai.py iš GALVOS. Mes išduodame šią komandą:

git rebase -i GALVA ~ 3

Pasirinkimas -i liepia „Git“ naudoti interaktyvųjį režimą.

Tai turėtų pasirodyti jūsų „Git“ teksto redaktoriaus lange:

pasirinkti 7a62538 Pridėta b.py
pasirinkti ce9e582 b.py modifikacija 1
pasiimti dfc0295 b.py modifikacija 2
 
# Perkraukite 952244a ... dfc0295 į 952244a (3 komandos (-os))
#
# Komandos:
# p, pasirinkti = naudoti įsipareigojimą
# r, perrašyti = naudoti įsipareigojimą, bet redaguoti įsipareigojimo pranešimą
# e, edit = use pühend, bet nustokite taisyti
# s, skvošas = naudokite įsipareigojimą, bet įsilieja į ankstesnį įsipareigojimą
# f, fixup = patinka „skvošas“, bet išmeskite šio įsipareigojimo žurnalo pranešimą
# x, exec = paleisti komandą (likusią eilutės dalį) naudojant apvalkalą
#
# Šios eilutės gali būti pertvarkytos; jie vykdomi iš viršaus į apačią.
#
# Jei čia pašalinsite eilutę, PADARYTI ĮSIPAREIGOJIMĄ.
#
# Tačiau jei viską pašalinsite, perkrovimas bus nutrauktas.
#
# Atminkite, kad tušti įsipareigojimai yra komentuojami
~

Įsipareigojimai pateikiami chronologiškai viršuje nuo ankstyviausių iki naujausių. Galite pasirinkti, kurį įsipareigojimą „pasirinkti“, o kurį - skvošą. Kad būtų paprasčiau, mes pasirinksime pirmąjį įsipareigojimą, o likusius - į jį. Taigi mes pakeisime tekstą taip:

pasirinkti 7a62538 Pridėta b.py
moliūgas ce9e582 b.py modifikacija 1
moliūgas dfc0295 b.py modifikacija 2
 
# Perkraukite 952244a… dfc0295 į 952244a (3 komandos (-os))
#
# Komandos:
# p, pasirinkti = naudoti įsipareigojimą
# r, perrašyti = naudoti įsipareigojimą, bet redaguoti įsipareigojimo pranešimą
# e, edit = use pühend, bet nustokite taisyti
# s, skvošas = naudokite įsipareigojimą, bet įsilieja į ankstesnį įsipareigojimą
# f, fixup = patinka „skvošas“, bet išmeskite šio įsipareigojimo žurnalo pranešimą
# x, exec = paleisti komandą (likusią eilutės dalį) naudojant apvalkalą
#
# Šios eilutės gali būti pertvarkytos; jie vykdomi iš viršaus į apačią.
#
# Jei čia pašalinsite eilutę, PADARYTI ĮSIPAREIGOJIMĄ.
#
# Tačiau jei viską pašalinsite, perkrovimas bus nutrauktas.
#
# Atminkite, kad tušti įsipareigojimai yra komentuojami

Kai tik išsaugosite ir uždarysite teksto failą, turėtų pasirodyti kitas teksto langas, kuris atrodo taip:

# Tai yra 3 įsipareigojimų derinys.
# Pirmasis įsipareigojimo pranešimas yra toks:
Pridėta b.py
 
# Tai antras įsipareigojimo pranešimas:
 
b.py modifikacija 1
 
# Tai trečiasis įsipareigojimo pranešimas:
 
b.py modifikacija 2
 
# Įveskite patvirtinimo pranešimą, kad atliktumėte pakeitimus. Prasideda linijos
# su „#“ bus ignoruojamas, o tuščias pranešimas nutraukia įsipareigojimą.
#
# Data: penktadienis kovo 30 d. 21:09:43 2018 -0700
#
# vykstama iš naujo; ant 952244a
# Jūs šiuo metu redaguojate įsipareigojimą, kai perkraunate „master“ filialą „952244a“.
#
# Pakeitimai, kuriuos reikia atlikti:
# Naujas failas: b.py
#

Išsaugokite ir uždarykite šį failą. Turėtumėte pamatyti kažką tokio:

$ git rebase -i GALVA ~ 3
[atskirta GALVA 0798991] Pridėta b.py
Data: penktadienis kovo 30 d., 21:09:43, 2018 -0700
1 failas pakeistas, 1 įterpimas (+)
sukurti režimą 100644 b.py
Sėkmingai pakartotinai atnaujinti ir atnaujinti refs / heads / master.

Jei dabar patikrinsite įsipareigojimų istoriją:

$ git log --oneline --graph --dekoruoti
* 0798991 (HEAD -> master) Pridėta b.py
* 952244a Pridėta a.py

Visi įsipareigojimai už b.py buvo sugrūsti į vieną įsipareigojimą. Galite patikrinti, pažvelgę ​​į b.py failas:

$ katė b.py
spausdinti („labas BBB“)

Jame yra 2 modifikacijos turinys.

Išvada

Rebase yra galinga komanda. Tai gali padėti išlaikyti jūsų istoriją švarią. Tačiau venkite jo naudoti jau viešiems įsipareigojimams, nes tai gali sukelti konfliktus ir painiavą. Naudokite jį tik savo saugyklai.

Tolesnis tyrimas:

„Tomb Raider for Linux“ pamoka
„Tomb Raider“ šešėlis yra dvyliktas „Tomb Raider“ serijos priedas - veiksmo ir nuotykių žaidimų franšizė, sukurta „Eidos Montreal“. Žaidimą kritikai i...
Kaip padidinti FPS sistemoje „Linux“?
FPS reiškia Kadrai per sekundę. FPS užduotis yra išmatuoti kadrų greitį atkuriant vaizdo įrašus ar žaidimus. Paprastais žodžiais, nepertraukiamų viso ...
Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...