Jei norite išsaugoti visą failo versiją, pridėta naudojant komandų indekso naujinimo indeksą?

Aš stengiuosi suprasti git santechnikos komandą ir kaip jos žemo lygio veiksmai kuria aukšto lygio veiksmus, pvz., Pridėti ir įsipareigoti.

Žinau, kad kiekvieną kartą, kai naudoju:

<i>

 git update-index file.txt 

Šį failą sukuriu blobą ir sukuriu nuorodą (failo pavadinimą ir SHA1 raktą, parašytą kartu) į indeksą (žinoma, tik jei failas yra pakeistas). Jei įsipareigoju, sukursiu medį, kuris nukreipia tik į vieną burbuliuką (aš pakeičiau tik vieną failą).

Tačiau „.git / objects“ duomenų bazėje saugomi ne vienas, bet daugiau (pvz., Penki ar šeši) blokai, sukurti iš šio vieno failo atnaujinimo indekso komandos, kurios jokiu konkrečiu medžiu neparodo jokio fiksavimo objekto . „git“ turėtų išsaugoti tik šį „blob“, kuris yra padarytuose momentiniuose vaizduose.

Ar git turi tam tikrą automatinį šiukšlių surinkimą, kuris ateityje gali pašalinti nepastebimą lūžį? Ir komandų atnaujinimo indeksas yra visas pridedamo ekvivalento ekvivalentas?

4
29 июля '15 в 20:02 2015-07-29 20:02 fingolfinas nustatytas liepos 29 d. 15 val. 20:02 2015-07-29 20:02
ответ 1 atsakymas

„Git“ turi šiukšlių surinkimo procesą, kurį automatiškai nurodo kitos komandos (pvz., Įsipareigojimas ir traukimas) tam tikru intervalu arba gali būti rankiniu būdu iškviečiamos naudojant git gc , kuris, be kitų dalykų, išvalo objektų duomenų bazę, ištrina objektus, kurie nėra nukreipti į kitą objektą arba žymeklį į filialą / žymę.

Git update-index komanda yra vandentiekis pagal git add china komandą.

Šis dviejų pakopų procesas taip pat pagreitina įsipareigojimo kūrimo procesą, nes „git“ nereikia maišyti failų, kai kuriate įsipareigojimą, nes jie buvo ištrinti ir išsaugoti, kai juos pridėjote prie indekso.

0
16 марта '16 в 18:28 2016-03-16 18:28 atsakymas pateikiamas T0xicCode kovo 16 d. 16:28 2016-03-16 18:28

Kiti klausimai apie žymas arba Užduoti klausimą