Wo speichert Git Dateien?

75

Ich habe gerade die folgenden Befehle in meinem Ruby on Rails- Projekt ausgeführt:

git init
git add .
git commit -a -m 'Initial'

Wo speichert Git dieses Repository tatsächlich? (Es ist auf meinem lokalen Computer, aber wo?)

Yuval Karmi
quelle
2
Übrigens, git commit -a -m 'initial' ist dasselbe wie git commit -am 'initial'
math2001

Antworten:

99

Es erstellt Ihr Repository in dem .gitOrdner im aktuellen Verzeichnis.

Matthew Flaschen
quelle
Hallo zusammen, ich habe das gleiche Problem. Mein Datenträger hatte nicht mehr genügend Speicherplatz, bevor der Git das Klonen beenden konnte, und jetzt weiß ich nicht, wo ich den alten Klon löschen soll. Ich war beim Ausführen von GIT im Verzeichnis ~, aber es gibt keinen .git-Ordner in ~ oder /. Was soll ich machen? Danke.
Yukio Fukuzawa
1
Ich weiß nicht, warum es kein .git-Verzeichnis geben würde. Hast du es versucht, ls -ld .gitals in ~?
Matthew Flaschen
Hallo, danke für deine Antwort. Ich habe den Klon noch nicht gefunden, aber der zweite Git war erfolgreich und der .git-Ordner wird gespeichert ~/common/.git( commonist der Name des Pakets). Ich gehe davon aus, dass GIT unfertige Jobs in einem temporären Ordner speichert und nach Erfolg wieder in das aktuelle Verzeichnis überträgt. Ich hoffe nur, dass nicht aufeinanderfolgende Downloads gelöscht wurden.
Yukio Fukuzawa
11
Es ist gut zu erwähnen, dass es sich um ein verstecktes Verzeichnis handelt, nur für den Fall, dass jemand es nicht sieht.
BK
1
@BK wies darauf hin, betrifft Windows, der Ordner ist ausgeblendet. Nur damit jeder weiß, wie er es sehen kann (Windows 7): F10 -> Extras -> Ordneroptionen -> Ansicht -> Versteckte Dateien und Ordner
anzeigen
31

Um ein bisschen vollständiger zu sein, arbeitet Git mit:

  • der Arbeitsbaum (dessen Wurzel dort ist, wo du a gemacht hast git init)
  • " Pfad zum Git-Repository " (wo es einen gibt .git, in dem die Revisionen aller Ihrer Dateien gespeichert werden)

GIT_DIR ist eine Umgebungsvariable, die ein absoluter Pfad oder ein relativer Pfad zum aktuellen Arbeitsverzeichnis sein kann.

Wenn es nicht definiert ist, befindet sich der "Pfad zum Git-Repository" standardmäßig im Stammverzeichnis Ihres Arbeitsbaums (wieder dort, wo Sie a erstellt haben git init).

Sie können jeden Git-Befehl von überall auf Ihrer Festplatte ausführen, vorausgesetzt, Sie geben den Arbeitsbaumpfad und den Git-Repository-Pfad an:

git command --git-dir=<path> --work-tree=<path>

Wenn Sie sie jedoch in einem der Unterverzeichnisse eines Git-Repositorys ausführen (ohne Angabe von GIT-DIR oder Arbeitsbaumpfad), sucht Git einfach in den aktuellen und übergeordneten Verzeichnissen, bis ein gefunden .gitwird. Nehmen Sie an, dass dies auch das Stammverzeichnis von ist Ihren Arbeitsbaum und verwenden Sie diesen .gitals einzigen Container für alle Revisionen Ihrer Dateien.

Hinweis: .gitist auch in Windows (msysgit) versteckt.
Sie müssten ein tun dir /AH, um es zu sehen.
Mit Git 2.9 (Juni 2016) kann dies konfiguriert werden .


Beachten Sie, dass Git 2.18 (Q2 2018) den Prozess zur Weiterentwicklung der Speicherung von Objekten durch Git startet, indem die interne globale Datenstruktur überarbeitet wird, damit mehrere Repositorys geöffnet, bearbeitet und anschließend geschlossen werden können.

Siehe Commit 4a7c05f , Commit 1fea63e (23. März 2018) von Jonathan Nieder ( artagnon) .
Sehen Sie verpflichten bd27f50 , begehen ec7283e , begehen d2607fa , begehen a68377b , begehen e977fc7 , begehen e35454f , begehen 332295d , begehen 2ba0bfd , begehen fbe33e2 , begehen cf78ae4 , begehen 13068bf , begehen 77f012e , begehen 0b20903 , begehen 93d8d1e , begehen ca5e6d2 , begehen cfc62fc, Commit 13313fc , Commit 9a00580 (23. März 2018) von Stefan Beller ( stefanbeller) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit cf0b179 , 11. April 2018)

repository: Rohobjektspeicherfeld einführen

Das Rohobjektspeicherfeld enthält alle Objekte, die für den Zugriff auf Objekte in einem bestimmten Repository erforderlich sind.

Dieser Patch führt den Rohobjektspeicher ein und füllt ihn mit dem objectdir, der früher Teil der Repository-Struktur war.

Wenn die Struktur Mitglieder gewinnt, füllen wir auch die Funktion aus, um den Speicher für diese Mitglieder zu löschen.

In einem späteren Schritt werden wir eine einführen struct object_parser, die die Objektanalyse in einer Repository-Struktur ergänzt:

  • Der Rohobjekt-Parser ist die Ebene, die den Zugriff auf den Rohobjektinhalt ermöglicht.
  • Der übergeordnete Objektparser-Code analysiert Rohobjekte und verfolgt mithilfe von ' struct object' die Elternschaft und andere Objektbeziehungen .

    Fügen Sie vorerst nur die untere Ebene zur Repository-Struktur hinzu.

VonC
quelle
Sicher, aber wo sind die Versionen der Dateien Ihres Codes? Wie greift Git diese Zweiginformationen ab, wenn ich Zweige tausche? Scheint hier und hier vollständigere Antworten zu sein (vielleicht genauer zu antworten, "wo speichert git Änderungen " als die OPs?) . Ich bin mir jedoch nicht sicher, ob das eine Bearbeitung wert ist.
Ruffin
@ Ruffin: Gute Links, aber wie Sie bemerkt haben, nicht genau die Frage des OP.
VonC
18

Wenn Sie sich auf einem englischen Windows-Computer befinden, lautet der Standardspeicherpfad von Git C:\Documents and Settings\< current_user>\, da sich unter Windows die lokalen Standardeinstellungen von Git unter befinden C:\Documents and Settings\< current_user>\.gitund Git für jeden repo/cloneat einen separaten Ordner erstellt C:\Documents and Settings\< current_user>\und alle Verzeichnisse des geklonten Projekts vorhanden sind.

Zum Beispiel, wenn Sie Symfony 2 mit installieren

git clone git://github.com/symfony/symfony.git

Das Symfony-Verzeichnis und die Datei befinden sich unter

C:\Documents and Settings\< current_user>\symfony\
Vishal Bandre
quelle
2
Sie sprechen über das HOMEVerzeichnis von Git Bash. Wenn Sie das Verzeichnis wechseln, werden die geklonten Repositorys natürlich in dem Verzeichnis erstellt, aus dem Sie aufrufen git clone. Was die Frage tatsächlich beantwortet, ist, dass git die Dateien in einem Ordner .gitim Repository speichert , wo immer Sie sie klonen möchten.
Shahbaz
1
am Windows 8.1: C:\Users\user_name\.project_nameoder anrufen von Run ...\.project_name.
Do Nhu Vy
8

Im Stammverzeichnis des Projekts befindet sich ein verstecktes .gitVerzeichnis, das die Konfiguration, das Repository usw. enthält.

Brenton Alker
quelle
4
Ein verstecktes Verzeichnis macht sehr viel Sinn. Das habe ich vermutet, aber ich konnte es im Terminal nicht sehen. Anscheinend ist Laufen lsnicht genug. Sie müssen auch laufen ls -a, um versteckte Dateien anzuzeigen.
Yuval Karmi
2
Das ist richtig. Und versteckt ist einfach definiert als "beginnt mit".
Matthew Flaschen
1
Dass "Dotfiles" versteckt sind, ist wahrscheinlich nur für diejenigen offensichtlich, die mit * nix-basierten Systemen vertraut sind, aber ja.
Brenton Alker
4

Ich bin unter Windows und habe meinen Standort gefunden, indem ich mit der rechten Maustaste auf das Git Bash-Programm in meinem Startmenü geklickt und Eigenschaften ausgewählt habe. Auf der Registerkarte Verknüpfung wird der Wert "Start in:" angezeigt. Für mich war es %HOMEDRIVE%%HOMEPATH%so, also öffnete ich eine CMD-Eingabeaufforderung und tippte ein echo %HOMEDRIVE%%HOMEPATH%, um den tatsächlichen Standort anzuzeigen.

user2271109
quelle
3

In einem .git-Verzeichnis im Stammverzeichnis des Projekts. Im Gegensatz zu einigen anderen Versionskontrollsystemen, insbesondere CVS, gibt es in keinem der Unterverzeichnisse zusätzliche Verzeichnisse.

Peter Tillemans
quelle
3

Ich konnte auch mein Git-Repository nicht finden. Ich verwende Windows 8 und habe mein Repository (aus Versehen) unter erstellt C:\Program Files (x86)\Git. Ich konnte den Repository-Ordner in Bash sehen, aber nicht in Cmd oder Windows Explorer.

Dann erinnerte ich mich an die Windows-Funktion "Virtual Store". Mein Repository-Ordner wurde tatsächlich unter erstellt C:\Users\<username>\AppData\Local\VirtualStore\Program Files (x86)\Git\<myrepo>und dort war mein .gitOrdner!

Bouvierr
quelle
1
Wie können Sie dafür sorgen, dass es "richtig" funktioniert und den Ordner an der gewünschten Stelle ablegen? Ich habe andere / ähnliche Probleme, aber alle, die mit Virtualstore zu tun haben, denke ich.
Terry
Unter Windows Vista und höher darf ein Benutzer ohne Administratorrechte keine Datei erstellen Program Files, die allen Benutzern gemeinsam ist. Windows erstellt stattdessen die Datei im VirtualStoreOrdner des Benutzers . Die einfachste Lösung besteht darin, das Erstellen von Dateien in eingeschränkten Ordnern zu vermeiden und sie stattdessen irgendwo wie in zu erstellen Documents.
Bouvierr
0

Wenn Sie suchen, wo der Projektordner erstellt wurde. Ich bemerkte, als ich die Git-Bash eintippte.

$ git init projectName

Es wird mir sagen, wo sich der Projektordner für dieses Projekt befindet.

Jason Lam
quelle
0

Wenn ich git clone ausführe, speichert Git das geklonte Paket in dem Verzeichnis, in dem ich den Befehl ausführe.

- Ich benutze Fenster.

zum Beispiel :

C:\Users\user>git clone https://github.com/broosaction/aria

erstellt einen Ordner :

 C:\Users\user\aria
Bruce Mubangwa
quelle
-5

Normalerweise wird der Ordner "Dokumente" in Windows angezeigt: C: \ Benutzer \ <"Name des Benutzerkontos"> \ Dokumente \ GitHub

Shabbar
quelle
3
Github hat nichts damit zu tun.
Arslan Ali
@shabbar Sie beantworten die Frage "Wo schlägt GitHub Desktop für Windows als Standardspeicherort für die Erstellung eines neuen Repositorys vor?".
Eureka