Hier ist die Definition eines nackten Repositorys aus gitglossary :
Ein nacktes Repository ist normalerweise ein Verzeichnis mit dem entsprechenden Namen und dem Suffix .git, das keine lokal ausgecheckte Kopie einer der Dateien enthält, die der Revisionskontrolle unterliegen. Das heißt, alle Git-Verwaltungs- und Steuerdateien, die normalerweise im versteckten .git-Unterverzeichnis vorhanden sind, befinden sich stattdessen direkt im Verzeichnis repository.git, und es sind keine anderen Dateien vorhanden und werden ausgecheckt. Normalerweise stellen Herausgeber öffentlicher Repositories nackte Repositories zur Verfügung.
Ich bin hier angekommen, weil ich mit einem "lokalen Repository" herumgespielt habe und in der Lage sein wollte, alles zu tun, was ich wollte, als wäre es ein Remote-Repository. Ich habe nur rumgespielt und versucht, etwas über Git zu lernen. Ich gehe davon aus, dass dies die Situation für jeden ist, der diese Antwort lesen möchte.
Ich würde für ein Gutachten lieben oder einige spezifische Gegenbeispiele, jedoch scheint es , dass (nach durch einige git - Quellcode wühlen , dass ich gefunden) einfach in die Datei gehen .git/config
und Einstellung der Kern Attribut entblößen zu wahren , git lassen Sie tun was auch immer Sie möchten remote mit dem Repository arbeiten. Dh die folgenden Zeilen sollten existieren in .git/config
:
[core]
...
bare = true
...
(Dies ist ungefähr das, was der Befehl git config --bool core.bare true
tun wird, was wahrscheinlich empfohlen wird, um kompliziertere Situationen zu behandeln.)
Meine Rechtfertigung für diese Behauptung ist, dass es im Git-Quellcode zwei verschiedene Möglichkeiten zu geben scheint, zu testen, ob ein Repo nackt ist oder nicht. Zum einen wird eine globale Variable überprüft is_bare_repository_cfg
. Dies wird während einer Einrichtungsphase der Ausführung festgelegt und spiegelt den in der .git/config
Datei gefundenen Wert wider . Der andere ist eine Funktion is_bare_repository()
. Hier ist die Definition dieser Funktion:
int is_bare_repository(void)
{
/* if core.bare is not 'false', let's see if there is a work tree */
return is_bare_repository_cfg && !get_git_work_tree();
}
Ich habe nicht die Zeit noch Know - how , das zu sagen mit absoluter Sicherheit, aber soweit ich könnte sagen , wenn Sie das haben bare
Attribut Satz true
in .git/config
, soll dies immer wieder zurückkehren 1
. Der Rest der Funktion ist wahrscheinlich für die folgende Situation:
- core.bare ist undefiniert (dh weder wahr noch falsch)
- Es gibt keinen Arbeitsbaum (dh das Unterverzeichnis .git ist das Hauptverzeichnis).
Ich werde später damit experimentieren, aber dies scheint darauf hinzudeuten, dass das Setzen von core.bare = true dem Entfernen von core.bare aus der Konfigurationsdatei und dem ordnungsgemäßen Einrichten der Verzeichnisse entspricht.
Wenn Sie core.bare = true setzen , können Sie auf jeden Fall darauf zugreifen , aber ich bin mir nicht sicher, ob das Vorhandensein von Projektdateien dazu führen wird, dass einige andere Vorgänge schief gehen. Es ist interessant und ich nehme an, lehrreich, in das Repository zu pushen und zu sehen, was lokal passiert ist (dh ausführen git status
und die Ergebnisse verstehen).
mv repo/.git repo.git; rm -rf repo