Kurze Antwort
Ein nacktes Repository ist ein Git-Repository ohne Arbeitskopie. Daher ist der Inhalt von .git für dieses Verzeichnis die oberste Ebene.
Verwenden Sie ein nicht nacktes Repository, um lokal zu arbeiten, und ein nacktes Repository als zentralen Server / Hub, um Ihre Änderungen für andere Personen freizugeben. Wenn Sie beispielsweise ein Repository auf github.com erstellen, wird es als nacktes Repository erstellt.
Also, in Ihrem Computer:
git init
touch README
git add README
git commit -m "initial commit"
auf dem Server:
cd /srv/git/project
git init --bare
Dann drücken Sie auf dem Client:
git push username@server:/srv/git/project master
Sie können sich dann die Eingabe sparen, indem Sie sie als Fernbedienung hinzufügen.
Das Repository auf der Serverseite erhält Commits per Pull und Push und nicht durch Bearbeiten von Dateien und anschließendes Festschreiben auf dem Server. Daher handelt es sich um ein reines Repository.
Einzelheiten
Sie können auf ein Repository pushen, das kein nacktes Repository ist, und git stellt fest, dass es dort ein .git-Repository gibt. Da die meisten "Hub" -Repositorys jedoch keine Arbeitskopie benötigen, ist es normal, ein nacktes Repository für zu verwenden es und empfohlen, da es keinen Sinn macht, eine Arbeitskopie in dieser Art von Repositories zu haben.
Wenn Sie jedoch in ein nicht nacktes Repository pushen, wird die Arbeitskopie inkonsistent, und git warnt Sie:
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'.
Sie können diese Warnung überspringen. Die empfohlene Einrichtung lautet jedoch: Verwenden Sie ein nicht nacktes Repository, um lokal zu arbeiten, und ein nacktes Repository als Hub oder zentralen Server, um Push- und Pull-Vorgänge durchzuführen.
Wenn Sie die Arbeit direkt mit der Arbeitskopie eines anderen Entwicklers teilen möchten, können Sie Repositorys voneinander abrufen, anstatt zu pushen.