Kaip atšaukti neskelbtinus failus iš „Git“

Sustabdykite failus, pridėkite įsipareigojimo pranešimą, stumkite. Ne, palauk! Ne tas failas. Ir dabar turime pradėti ieškoti googlinimo.

Kiekvienas kūrėjas anksčiau netyčia padarė neskelbtinus failus. Taigi, kaip išspręsti situaciją ir užtikrinti, kad ji nepasikartos?

Šiame straipsnyje aš paaiškinsiu, ką daryti, kai netyčia padarote neskelbtiną failą, ir įtraukite būtinas „Git“ komandas, kad pakoreguotumėte istoriją.

Žalos kontrolė

Taigi netyčia padarėte neskelbtiną bylą. Pavadinkime tai .env . Yra du svarbūs klausimai, į kuriuos reikia atsakyti:

  • Ar perdavėte įsipareigojimą nuotolinei saugyklai?
  • Ar nuotolinė saugykla yra vieša?

Dar nesistumdytas

Jei dar nespaudėte, situacija visiškai nėra kritiška. Galite grįžti prie ankstesnio įsipareigojimo :

git reset HEAD^ --soft 

Jūsų failai liks darbinėje kopijoje, kad galėtumėte pataisyti neskelbtiną failą / informaciją. Jei norite išsaugoti įsipareigojimą ir tiesiog pašalinti neskelbtiną failą , atlikite šiuos veiksmus:

git rm .env --cached git commit --amend 

Galite naudoti --amendtik paskutinį įsipareigojimą. Jei pavyko pridėti daugybę įsipareigojimų, naudokite:

git rebase -i HEAD~{how many commits to go back?} 

Tai leis jums pašalinti klaidingą įsipareigojimą ir pakartos visus likusius įsipareigojimus po taisymo, kad jų neprarastumėte.

Jau pastūmėjo

Jei stumdėtės, yra svarbus skirtumas tarp valstybinių ir privačių saugyklų.

Jei jūsų saugykla yra privati ​​ir joje nėra robotų ar žmonių, kuriais nepasitikite, galite lengvai pakeisti paskutinį įsipareigojimą naudodamiesi dviem anksčiau pateiktomis komandomis.

Jei ant probleminio uždėjote daugybę įsipareigojimų, vis tiek galite naudoti filtro šakos arba BFG atpirkimo valiklį, kad pašalintumėte jautrų failą iš „GIT“ istorijos :

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch .env" --prune-empty --tag-name-filter cat -- --all 

Tačiau nepamirškite dviejų svarbių šių pokyčių aspektų:

  • Jūs iš tikrųjų keičiate istoriją

    Jei yra kitų žmonių, kitų filialų, kitų šakių ar atvirų traukimo užklausų, priklausančių nuo dabartinės saugyklos būsenos, jūs juos sulaužysite. Tokiais atvejais saugyklą vertinkite taip, lyg ji būtų vieša, ir venkite keisti istoriją.

  • Turite išvalyti talpyklą

    Visada turite susisiekti su „Git“ saugyklos teikėjo palaikymo tarnyba ir paprašyti išvalyti talpyklos talpyklą. Nors jūs ištaisėte probleminį įsipareigojimą arba perrašėte istoriją, senas įsipareigojimas su neskelbtinu failu lieka talpykloje. Norėdami jį pasiekti, turite žinoti jo ID, tačiau jis vis tiek pasiekiamas, kol neišvalysite talpyklos.

Ar man reikia atkurti raktus, jei jie perduodami į viešą saugyklą?

Trumpai tariant, taip. Jei jūsų saugykla yra vieša arba nemanote, kad tai saugi vieta dėl kokių nors kitų priežasčių, turite laikyti, kad neskelbtina informacija yra pažeista.

Net jei pašalinsite duomenis iš saugyklos, nieko negalėsite padaryti dėl robotų ir kitų šakų. Taigi kokie yra tolesni žingsniai?

  • Išjunkite visus raktus ir (arba) slaptažodžius

    Atlikite tai kaip pirmą žingsnį. Deaktyvavus raktus, neskelbtina informacija tampa nenaudinga.

  • Sureguliuokite gitignore

    Pridėkite visus neskelbtinus failus prie .gitignore, kad įsitikintumėte, jog git jų neseks.

  • Pašalinkite neskelbtiną failą
  • Įvykdykite pataisą su prasmingu paaiškinimu

    Nebandykite nuslėpti klaidos. Kiti bendradarbiai ir jūs per mėnesį įvertinsite paaiškinimą, kas nutiko ir ką šis įsipareigojimas ištaiso.

Geriausia praktika saugant neskelbtinus duomenis „Git“

Norėdami išvengti tokios situacijos ateityje, pateikiame keletą patarimų, kaip saugoti neskelbtinus duomenis:

Saugokite neskelbtinus duomenis .env faile (arba panašiame faile kitose platformose)

Laikykite API raktus ir kitus neskelbtinus duomenis viename .env faile. Tokiu būdu netyčia nepadarysite naujo rakto, kai .env failas jau neįtrauktas į „git“.

Dar vienas didelis privalumas yra tai, kad jūs galite pasiekti visus raktus naudodami visuotinį proceso kintamąjį.

Jei įmanoma, naudokite API raktus

API raktus lengva sugeneruoti ir išjungti, jei jie pažeisti. Jei įmanoma, naudokite juos ir venkite naudoti kredencialus / slaptažodžius.

Prie kūrimo įrankio pridėkite API raktus

API raktai paprastai reikalingi kuriant programas. Kuriant tokius įrankius kaip „Netlify“, galite pridėti šiuos raktus saugiose jų administravimo srityse. Šie raktai automatiškai įvedami į jūsų programą per visuotinį proceso kintamąjį.

Pridėkite .env failą prie „gitignore“

Įsitikinkite, kad „Git“ neseka failų, kuriuose yra neskelbtinos informacijos.

Pateikite .env.template failą

Šablono failas nurodo kitiems bendradarbiams pridėti reikalingus API raktus nereikalaujant, kad jie skaitytų ilgus dokumentus.

Nekeiskite nuotolinio valdymo istorijos

Naudokite tai kaip nykščio taisyklę. Jei laikėtės pirmiau nurodytų taisyklių, jums nereikės keisti istorijos.

Tikiuosi, kad ši informacija padėjo išlikti saugioje pusėje. Ar turite asmeninės patirties, susijusios su įsipareigojimais ar galbūt gera pamoka ? Pakalbėk su manimi „Twitter“ :-)