Gebruik git om alleen de laatste revisie krijgen

Ik wil een project dat gebruik maakt van git volgen. Ik wil niet de volledige repository en de volledige geschiedenis te klonen, ik wil gewoon de laatste revisie, en ik wil in staat zijn om te updaten naar nieuwe revisies van de externe project.

Ik heb geprobeerd met behulp van git clone, maar dit leidt tot een kopie van de gehele collectie (enorme bestand), en het bijhouden van wijzigingen maakt de schijfruimte nog groter (100MB bestanden neemt nu meer dan 2 GB).

Ik ben niet van plan te zijn het indienen van patches, en ik heb niet de geschiedenis nodig. Ik wil gewoon de nieuwste versie als in subversie.

Is dit mogelijk in git?


Antwoord 1, Autoriteit 100%

Met git clonemet de --depthoptie is ingesteld op 1om een ​​ondiepe kloon met een geschiedenis afgebroken om in de laatste creëren plegen.

Bijvoorbeeld:

git clone --depth 1 https://github.com/user/repo.git

Om ook initialiseren en actualiseren geneste submodules, ook langs --recurse-submodulesen kloon hen oppervlakkig, ook langs --shallow-submodules

Bijvoorbeeld:

git clone --depth 1 --recurse-submodules --shallow-submodules https://github.com/user/repo.git

Antwoord 2, gezag 13%

Alternatieve oplossing voor het doen ondiepe kloon (git clone --depth=1 <URL>) zou zijn, als afstandsbediening zijsteunen het, gebruik --remotemogelijkheid git archive

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

Of, als remote repository in kwestie browse-in staat met behulp van enkele webinterface , zoals gitweb of GitHub, dan is er een kans dat het ‘snapshot’ functie, en u kunt de nieuwste versie te downloaden ( zonder versie-informatie) van de web interface.


Antwoord 3

Deze dagen, ondiep klonen worden aanbevolen tegen in de meeste gevallen .

Hoewel, voor de use case die u noemt (de nieuwste versie downloaden en nooit meer aanraken), git clone --depth=1werken, in de meer algemene geval, het kan tot problemen leiden. Bijvoorbeeld, als u wilt uw kloon up-to-date met upstream, git fetchis veel duurder op een ondiepe kloon.

Als wat je wilt is om minder gegevens te downloaden, gedeeltelijke klonen zijn beter voor het algemene geval:

git clone --filter=tree:0 <url>

Dit zal nog steeds downloaden van de geschiedenis te plegen, maar het zal niet downloaden bestand bomen en de inhoud van bestanden voor de vorige commits. Ophalingen om upstream commits zal nog steeds goedkoop.

Other episodes