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?)


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.


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.


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\

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.


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.


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.


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!


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.


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

-5

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.