Risposta breve
Un repository nudo è un repository git senza una copia funzionante, quindi il contenuto di .git è di primo livello per quella directory.
Utilizzare un repository non bare per lavorare localmente e un repository bare come server / hub centrale per condividere le modifiche con altre persone. Ad esempio, quando si crea un repository su github.com, viene creato come repository nudo.
Quindi, nel tuo computer:
git init
touch README
git add README
git commit -m "initial commit"
sul server:
cd /srv/git/project
git init --bare
Quindi sul client, si preme:
git push username@server:/srv/git/project master
Puoi quindi salvare te stesso digitando aggiungendolo come telecomando.
Il repository sul lato server eseguirà i commit tramite pull e push, e non modificando i file e quindi eseguendo il commit nella macchina server, quindi è un repository nudo.
Dettagli
È possibile eseguire il push in un repository che non è un repository nudo e git scoprirà che esiste un repository .git lì, ma poiché la maggior parte dei repository "hub" non ha bisogno di una copia funzionante, è normale usare un repository nudo per e raccomandato in quanto non ha senso avere una copia funzionante in questo tipo di repository.
Tuttavia, se passi a un repository non bare, stai rendendo la copia funzionante incoerente e git ti avvertirà:
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
Puoi saltare questo avviso. Ma l'installazione consigliata è: utilizzare un repository non bare per lavorare localmente e un repository bare come hub o server centrale da cui eseguire il push e il pull.
Se si desidera condividere il lavoro direttamente con la copia di lavoro di un altro sviluppatore, è possibile estrarre dagli altri repository invece di inviare.