2012-08-22 14 views
6

Ich folgte this Post, um eine Remote-Git-Repo einzurichten.git initialisieren remote Repo

Statt von Grund auf neu zu starten,

  1. Ich habe einige Entwicklung in meinem pc1 (das Repo mit git init erstellt wurde)
  2. Jetzt wollte ich das Repo zu einem Server (gleichen Subnetz bewegen

    )

    ssh [email protected]
    mkdir my_project.git
    cd my_project.git
    git init --bare

  3. Dann lokal

    cd my_project
    git remote add origin [email protected]:my_project.git
    git push -u origin master

nun in Fern (Server) Repo, ich sehe diese Ordner

Filialen Beschreibung HEAD Config Haken Info Refs Objekte

Ich erwartete/wollen die sehen gleicher Inhalt wie mein lokaler (pc1) git Repo

sind doc src

+1

Ich denke, Sie verstehen nicht, was die '--bare' Option tut. –

+2

Suchen Sie in Ihrem * local * -Repository im '.git'-Ordner nach. Dort speichert 'git' die Repository-Informationen, und genau das speichert der Server. Es hat kein * Arbeitsverzeichnis *, es speichert nur die Repository-Informationen - dh den Inhalt des '.git'-Ordners. – simont

Antwort

8

Sie haben ein leeres Repository auf der Remote-Seite initialisiert. Das bedeutet, dass der Verlauf gespeichert wird, aber kein Arbeitsverzeichnis vorhanden ist (Übersetzung - kein tatsächlicher Checkout des Projekts). Die Struktur, die Sie sehen, ist normal.

+0

danke Chris. Also, wenn ich init in Schritt 2 (im Server) weglassen, würde es als erwartet funktionieren. Ist dies der richtige Ansatz, so dass der Server Repo meinen lokalen Spiegel widerspiegelt? – bsr

+0

Ich empfehle Ihnen nicht, es ohne '--bare' auszuführen. Der Grund ist folgender: Nehmen wir an, Sie nehmen Änderungen an einem Remote-Client vor. Dann schiebst du auf deinen Server. Sie würden * erwarten *, dass das Arbeitsverzeichnis auf dem Server automatisch aktualisiert wird. Dies ist nicht der Fall. Aus diesem Grund können die Dinge verwirrend werden. Stattdessen empfehle ich Ihnen, sich einfach an die Idee zu gewöhnen, dass der zentrale Server leer sein sollte, und jedes Mal, wenn Sie sich verpflichten, klonen Sie das Projekt woanders hin und schieben Sie Ihre Änderungen zurück. –

4

git init --bare bedeutet, dass Sie erstellen nackten Repository, anstatt Arbeits Repository. Ein leeres Repository wird normalerweise auf dem Server gespeichert und sieht genauso aus wie Ihr .git Verzeichnis Ihres Arbeits-Repository.