Réponse courte
Un dépôt nu est un dépôt git sans une copie de travail, par conséquent, le contenu de .git est de haut niveau pour ce répertoire.
L'utilisation d'un non-dépôt nu de travailler localement et un dépôt nu comme un serveur central/hub de partager vos modifications avec d'autres personnes. Par exemple, lorsque vous créez un espace de stockage sur github.com, il est créé comme un dépôt nu.
Donc, dans votre ordinateur:
git init
touch README
git add README
git commit -m "initial commit"
sur le serveur:
cd /srv/git/project
git init --bare
Puis sur le client, vous poussez:
git push username@server:/srv/git/project master
Vous pouvez ensuite enregistrer vous-même la saisie de données par l'ajout d'une télécommande.
Le référentiel sur le côté serveur va s'engage via tirer et pousser, et non par vous, l'édition de fichiers, puis s'engager dans la machine serveur, donc c'est un dépôt nu.
Détails
Vous pouvez pousser un référentiel qui n'est pas un dépôt nu, et git trouverez qu'il ya un .le dépôt git de là, mais comme la plupart des "hub" référentiels n'ont pas besoin d'une copie de travail, il est normal d'utiliser un dépôt nu pour elle et a recommandé qu'il n'y a aucun point en ayant une copie de travail dans ce type de dépôts.
Toutefois, si vous pousser à non dépôt nu, vous effectuez la copie de travail incompatibles, et git va vous avertir:
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'.
Vous pouvez ignorer cet avertissement. Mais la configuration recommandée est: utilisez un non-dépôt nu de travailler localement et un dépôt nu comme un hub ou d'un serveur central à pousser et à tirer.
Si vous voulez partager travailler directement avec les autres développeurs de la copie de travail, vous pouvez tirer les uns des autres référentiels au lieu de pousser.