Un repository Git predefinito / non nudo contiene due parti di stato:
- Una fotografia istantanea di tutti i file nel repository (questo è ciò che significa "albero di lavoro" in Git gergo)
- Una cronologia di tutte le modifiche apportate a tutti i file che sono mai stati nel repository (non sembra esserci un pezzo conciso di gergo Git che racchiude tutto questo)
L' istantanea è ciò che probabilmente pensi come il tuo progetto: i tuoi file di codice, i file di compilazione, gli script di supporto e qualsiasi altra cosa che esegui con Git.
La cronologia è lo stato che ti consente di controllare un commit diverso e ottenere un'istantanea completa di come apparivano i file nel tuo repository quando quel commit è stato aggiunto. Consiste in un mucchio di strutture dati interne a Git con cui probabilmente non hai mai interagito direttamente. È importante sottolineare che la cronologia non si limita a memorizzare i metadati (ad es. "L'utente U ha aggiunto molte righe al file F all'ora T come parte del commit C"), ma memorizza anche i dati (ad es. "L'utente U ha aggiunto queste righe esatte al file F" ).
L'idea chiave di un semplice repository è che in realtà non è necessario disporre dell'istantanea. Git mantiene l'istantanea in giro perché è conveniente per gli esseri umani e altri processi non Git che vogliono interagire con il tuo codice, ma l'istantanea è solo la duplicazione dello stato che è già nella cronologia.
Un repository nudo è un repository Git che non dispone di uno snapshot. Memorizza solo la cronologia.
perchè vorresti questo? Bene, se hai intenzione di interagire con i tuoi file solo usando Git (cioè, non modificherai direttamente i tuoi file o li userai per creare un eseguibile), puoi risparmiare spazio non mantenendo l'istantanea. In particolare, se stai mantenendo una versione centralizzata del tuo repository su un server da qualche parte (cioè stai fondamentalmente ospitando il tuo GitHub), quel server dovrebbe probabilmente avere un repository nudo (useresti comunque un repository non nudo sul tuo macchina locale, tuttavia, poiché presumibilmente vorrai modificare la tua istantanea).
Se desideri una spiegazione più approfondita dei repository nudi e un altro caso d'uso di esempio, ho scritto un post sul blog qui: https://stegosaurusdormant.com/bare-git-repo/
git clone
puoi convertire liberamente tra repository nudi e non nudi.