Nelaimingi atsitikimai įvyksta, jei dirbate Git. Galbūt netyčia įtraukėte failą, kurio ten neturėtų būti, arba jūsų įsipareigojimas nėra labai aiškus. Tai tik keli scenarijai, kai galbūt norėsite ištrinti failą iš įsipareigojimo.
Šis vadovas tiksliai pasakys, kaip ištrinti failą iš įsipareigojimo ir kodėl turėtumėte būti ypač atsargūs naikinant Git failą.
Kaip pašalinti failą iš „Git Commit“.
Yra keletas būdų, kaip ištrinti failą iš „Git“ įsipareigojimo, atsižvelgiant į tai, ar tai vietinis įsipareigojimas, ar jau perkėlėte jį į nuotolinį atkūrimą. Paprasčiausias būdas būtų ištrinti visą įsipareigojimą „Git“ , bet jei norite išlaikyti daugumą failų, štai kaip galite naudoti „git reset“, kad ištrintumėte failą iš vietinės saugyklos:
- Naudokite git log, kad surastumėte įsipareigojimą, kuriame yra failas, kurį norite pašalinti.
- Vykdykite git reset –soft HEAD^, kad anuliuotumėte paskutinį įpareigojimą, bet išlaikytumėte pakeitimus sustojimo srityje.
- Pašalinkite failo, kurį norite pašalinti, stadiją naudodami git reset HEAD .
" terminale" width="578" height="363" data-recalc-dims="1" data-src="https://i0.wp.com/www.alphr.com/wp-content/uploads/ 2023/12/Removing-a-File-From-a-Commit-Step-by-Step-3.png?resize=578%2C363&ssl=1" data-srcset="https://i0.wp.com/www .alphr.com/wp-content/uploads/2023/12/Removing-a-File-From-a-Commit-Step-by-Step-3.png?w=578&ssl=1 578w, https://i0. wp.com/www.alphr.com/wp-content/uploads/2023/12/Removing-a-File-From-a-Commit-Step-by-Step-3.png?resize=300%2C188&ssl=1 300w , https://i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/Removing-a-File-From-a-Commit-Step-by-Step-3.png?resize =510%2C320&ssl=1 510w, https://i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/Removing-a-File-From-a-Commit-Step-by- Step-3.png?resize=400%2C250&ssl=1 400w, https://i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/Removing-a-File-From-a -Commit-Step-by-Step-3.png?resize=302%2C190&ssl=1 302w" data-sizes="(maks. plotis: 578px) 100vw, 578px">
- Dar kartą patvirtinkite likusius failus naudodami git commit -m „Jūsų patvirtinimo pranešimas“.
Nuo „Git 2.23.0“ atnaujinimo taip pat galite naudoti „git“ atkūrimą, pavyzdžiui:
- Įveskite git restore –stage ir pakeiskite „filepath“ į failą, kurį norite pašalinti.
" komanda komandų eilutėje" width="578" height="363" data-recalc-dims="1" data-src="https://i0.wp.com/www.alphr.com/wp-content /uploads/2023/12/git-restore-1.png?resize=578%2C363&ssl=1" data-srcset="https://i0.wp.com/www.alphr.com/wp-content/uploads/ 2023/12/git-restore-1.png?w=578&ssl=1 578w, https://i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/git-restore-1 .png?resize=300%2C188&ssl=1 300w, https://i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/git-restore-1.png?resize=510% 2C320&ssl=1 510w, https://i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/git-restore-1.png?resize=400%2C250&ssl=1 400w, https: //i0.wp.com/www.alphr.com/wp-content/uploads/2023/12/git-restore-1.png?resize=302%2C190&ssl=1 302w" data-sizes="(max-width : 578px) 100vw, 578px">
- Tada įvykdykite: git commit -c ORIG_HEAD .
Kita alternatyva visiškai pašalinti failą yra tai:
- Pašalinkite failą naudodami git rm .
- Pakeiskite „failo pavadinimą“ tikruoju failo pavadinimu.
- Įsipareigokite naudodami keitimo vėliavėlę įvesdami git commit – amend .
Komanda „rm“ pašalina failą iš darbo medžio ir indekso. Tai reiškia, kad jis bus visiškai pašalintas iš vietinių ir nuotolinių atpirkimo sandorių. Tai naudinga komanda, kai stebite failą ir vėliau nusprendžiate, kad jo nebereikia sekti, todėl galite ištrinti jį iš viso projekto.
Taip pat galite apsvarstyti galimybę ištrinti pačią Git šaką, jei norite pašalinti visus įsipareigojimus ir failus šakoje.
Kodėl pašalinti failą iš „Git Commit“?
Yra keletas priežasčių, kodėl jums gali tekti pašalinti failą iš „Git“ įsipareigojimo. Pažvelkime į keletą.
Įsipareigojimų istorijos supaprastinimas
Dideliuose ir sudėtinguose projektuose įsipareigojimų istorija gali būti pernelyg apsunkinta pakeitimų, atnaujinimų ir pataisymų. Ir kai kurių iš šių pakeitimų tiesiog nebūtina. Kartais gali būti įrašytas failas, kuris nepadeda jokios naudos projekto eigai ar aiškumui, pvz., eksperimentinė funkcija, kuri nepasiteisino, arba laikinas failas, kuris nebegalioja.
Tokių failų pašalinimas iš įsipareigojimų gali žymiai sugadinti projekto istoriją ir palengvinti komandos nariams suprasti kūrimo laiko juostą. Jei esate komandos dalis, aiški ir glausta įsipareigojimų istorija padeda jūsų komandos nariams prisitaikyti prie jūsų projekto evoliucijos ir leidžia jiems žinoti, negaištant laiko sudėtingam kodui iššifruoti.
Klaidų taisymas
Klaidų taisymas yra bene dažniausia priežastis, kodėl failas pašalinamas iš įsipareigojimo „Git“. Pavyzdžiui, galbūt vėlavote vykdyti projektą ir paskubomis netyčia įtraukėte derinimo žurnalo failą prie savo įsipareigojimo. Arba po įsipareigojimo supratote, kad įtraukėte failo versiją, kuri nėra galutinė ar atnaujinta, bet senesnė WIP. Arba failas gali būti visiškai nepageidaujamas arba žalingas.
Tokiose situacijose, ištrynus failą iš įsipareigojimo, išsaugomas jūsų įsipareigojimų istorijos vientisumas ir išvaloma nuo nereikalingų ar potencialiai žalingų failų. Norite užtikrinti, kad tik numatytas turinys pateks į galutinį juodraštį.
Jautrių ar įslaptintų duomenų pašalinimas
Lengviau, nei gali atrodyti, netyčia įrašyti neskelbtinus duomenis. Tačiau tai klaida, kuri gali turėti rimtų pasekmių. Pavyzdžiui, šiais laikais API raktai yra didelė daugelio kodavimo projektų dalis, ypač augant AI ir intensyviai integruojant žiniatinklio tinklą. Tačiau API raktai yra privatūs ir turi būti saugomi nuo smalsių akių. Galite dirbti su nauja funkcija naudodami API ir netyčia įrašyti failą, kuriame yra raktas, arba konfigūracijos failą su duomenų bazės kredencialais.
Dėl tokio pobūdžio priežiūros gali atsirasti saugumo spragų, kurios gali atskleisti neskelbtiną informaciją neįgaliotiems asmenims. Tokiais atvejais failo pašalinimas iš įsipareigojimo neapsiriboja paprastu klaidų taisymu – tai turite padaryti, ypač jei dirbate kaip komandos dalis arba įmonėje. Tai panašu į supratimą, kad netyčia bendrinate konfidencialų dokumentą viešajame aplanke ir greitai perkėlėte jį į saugią vietą.
Svarstymai, kuriuos reikia nepamiršti
Kartais failo ištrynimas iš saugyklos nėra toks paprastas, kaip norėtumėte. Venkite šių galimų problemų.
Saugyklų konfliktai
Failų pašalinimas iš viešųjų ar bendrinamų įsipareigojimų nėra kažkas, ko turėtumėte daryti atsainiai. Atsižvelgiant į failo pobūdį ir projekto tipą, tai gali labai nuvilti arba suklaidinti jūsų komandos narius. Be to, tai sukelia konfliktus tarp jų vietinių saugyklų ir nuotolinio. Taigi, prieš ištrindami failą, greitai pasikalbėkite su savo komanda ir paaiškinkite, ką darote ir kodėl.
Tai gali būti taip paprasta, kaip išsiųsti pranešimą savo komandos pokalbių platformoje arba iškelti jį atskirame susitikime. Šis įspėjimas yra ne tik mandagus. Tai leidžia jūsų komandos nariams tęsti savo darbą sutrikusiems. Tai taip pat atveria duris atsiliepimams – galbūt komandos draugas turi priežastį laikyti tą failą įsipareigojime, o gal jie turi geresnį problemos sprendimą.
Prarasti duomenys
Tvarkydami saugyklą nenorite išmesti to, kas svarbu, ypač vykdant didesnius projektus. Taigi, prieš įsipareigodami ištrinti failą, skirkite sekundę, net trečią, pažiūrėkite į failą, kurį ketinate pašalinti.
Paklauskite savęs: „Ar šiame faile yra koks nors kodas, duomenys ar informacija, kurios gali prireikti vėliau? Tai panašu į seną aplanką kompiuteryje; kartais randate failus, kurie tuo metu atrodė nesvarbūs, bet dabar yra vertingi. Tokiu būdu nepateksite į situaciją, kai įnirtingai ieškosite kodo ar duomenų, kuriuos anksčiau klaidingai laikėte nereikalingais.
Grįžti yra geriau viešosioms saugykloms
Kai dirbate su viešosiomis saugyklomis, dažnai geriau naudoti „ git revert “ kaip neardomąjį būdą ką nors pašalinti iš saugyklos. Tai leidžia anuliuoti pakeitimus skaidriu ir atsekamu būdu, kurį jūsų komandos nariai gali lengvai stebėti.
Jei dirbate su atvirojo kodo projektais ar bet kokiomis viešomis bendradarbiavimo pastangomis, kai pakeitimai gali turėti įtakos daugeliui bendradarbių, viskas bus aišku. Komanda „git revert“ iš esmės sukuria naują įsipareigojimą, kuris anuliuoja ankstesnio pakeitimus nekeičiant projekto istorijos. Tai pagarba kitiems bendradarbiams ir palaiko projekto laiko juostos tęstinumą bei vientisumą. Jūs atvirai taisote klaidą grupės projekte ir išsaugote visų indėlį. Ir projekto istorija lieka nepakitusi, kad visi galėtų pamatyti ir suprasti.
Tvarkykite „Git“ istoriją
Nesunku netyčia įtraukti failą, kuriame nėra vietos Git įsipareigojime, į Git įsipareigojimą. Laimei, taip pat lengva grąžinti šį įtraukimą. Priklausomai nuo to, ko norite, yra įvairių būdų tai padaryti. Tiesiog nepamirškite turėti omenyje savo komandos, jei esate komandos narys, ir nuosekliai laikykite vietines bei nuotolines saugyklas.
Ar kada nors netyčia įtraukėte neteisingą failą į savo Git įsipareigojimą? Koks buvo jūsų sprendimas? Parašykite komentarą žemiau. Mes visada noriai juos skaitome.