Perkėlę „Git“ saugyklos istoriją, pavyzdžiui, norėdami redaguoti senus įsipareigojimus, ištrinti nereikalingus duomenis (pvz., Asmens duomenis ar didelius failus), pakeisti failo struktūrą, nustatyti metaduomenis ir tt

Yra daug priežasčių perrašyti „Git“ istoriją:

  • Senosios fiksacijos nustatymas
  • Mažinti saugyklos dydį ištrinant didelius failus, anksčiau patikrintus repo - jie vis dar užima vietos diske, net jei jie yra pašalinti iš vėlesnių įsipareigojimų
  • Ištrinkite konfidencialius duomenis (slaptažodžius, kredencialus ir kt.), Kurių nenorėtumėte naudoti keičiant atpirkimo sandorį, arba tiesiog persiųsti atpirkimo sandorį į išorinį prieglobos paslaugų teikėją.
  • Iš naujo įdiekite arba ištrinkite visus aplankus, kad atspindėtų daugelio subprojektų atskyrimą nuo vieno repo iki daugelio arba atvirkščiai.
Saugojimas

„Git“ taupo visą projekto istoriją, o „Git“ dizainas yra nepakeičiamas (jų identifikatorius visiškai keičiasi, jei pasikeičia bent maža jų turinio ar istorijos dalis) - kaip jūs galite ištrinti nereikalingus duomenis, saugomus saugyklų gelmėse?

Istorijos perrašymo įrankiai

Istorijos keitimas „Git“ saugykloje reiškia viso vėlesnio įvykių istorijos perrašymą iš šio taško. Yra keletas įrankių, leidžiančių tai padaryti:

  • git commit --amend - paskirti paskutinį įsipareigojimą, kurį git commit --amend .
  • git rebase kad būtų galima iš naujo įdiegti šakos istoriją, atkuriant jį taip, tarsi viskas būtų pagrįsta kitu (dažnai naujesniu) kapinyno istorijos tašku. Naudojant su -i vėliava, galima interaktyviai keisti istoriją.
  • git filter-branch yra automatinis įrankis daugeliui įsipareigojimų (daugelyje filialų) perrašymui, naudojant vieną ar daugiau korpuso scenarijų, kad būtų galima atlikti pakeitimus, o tai suteikia jam daugiau lankstumo.
  • „BFG Repo-Cleaner“ yra alternatyva git-filter-branch , kuris užtikrina didesnį greitį ir paprastą naudojimą, apsiribojant įprastais atvejais, naudojant užduotį ištrinti nepageidaujamus duomenis.

Keitimasis perrašyta istorija

Jei saugykla buvo padalyta prieš perrašymą, perrašytą versiją turite perkelti į pagrindinį serverį, naudodami --force arba --mirror , ir tada paprašykite kitų naudotojų pakartotinai klonuoti saugyklą.