2009-05-21 5 views
15

Ich bin gerade mit dem Cruisen der Google-Suchergebnisse fertig geworden, die alle E-Mail-Gerüchte enthalten, wie dumm es ist, dass Git nicht ein leeres Repository klonen kann. Eine nette Seele reichte sogar einen Patch ein. Bis zum Upgrade von git ist die einfachste und einfachste Methode, ein leeres bare Git-Repository zu klonen.Was ist der einfachste Weg, um ein leeres * nacktes * Git-Repository zu klonen?

Die ideale Lösung wird die -o Option unterstützt der Remote-Repo einen anderen Namen als origin, und es wird implementierbar als ein einfaches Shell-Skript, zum Beispiel git-clone-empty-repo zu geben.

(Warum ich das machen möchte: Ich habe ein leeres Git Repo auf unserem NetApp Filer eingerichtet, wo es gesichert wird, aber ich möchte mit einem Klon auf meiner lokalen Festplatte arbeiten und pushen und ziehen hin und her Andere Leute, die ich mit der Arbeit das gleiche tun, ich neue git repos viel schaffen und meine Unfähigkeit, eine leere Repo zu klonen macht mich verrückt)


EDIT:... VonC Thread schlägt dass

$ git-init 
$ git-remote add origin server:/pub/git/test.git 

ist äquivalent zu Clon den Remote-Repo, wenn der Repo leer ist. Das ist nicht ganz das, was ich will, weil ich immer die -o Option mit Git Clone verwende; Ich benenne den Remote-Repo entsprechend der Maschine oder einem anderen denkwürdigen Kriterium. (Ich habe zu viele repos sie gerade zu halten, wenn sie alle origin heißen.)


EDIT: Die folgende Antwort wird markiert :-)

akzeptiert

einen leeren So zu klonen, blank repo bei Pfad,

  1. Halt bei ~/git/onefile einen nicht-bare git repo eine unschädliche Datei wie .gitignore enthält. (Alternativ erstellen Sie eine solche Repo-dynamisch.)
  2. (cd ~/git/onefile; git pushWegmaster)
  3. git clone -oNamePfad

Mit anderen Worten, versuchen Sie nicht, das leere Repo zu klonen, sondern Nachdem Sie es erstellt haben, drücken Sie ein einfaches Repo, das eine harmlose Datei enthält. Dann ist es nicht mehr leer und kann geklont werden.

Wenn mich jemand nicht schlägt, werde ich ein Shell-Skript posten.

+0

Added eine Möglichkeit, eine „fast leer“ Repository in ein „fast leer“ ** ** nackten Repository zu transformieren, wie – VonC

+1

angefordert Ich denke, dass moderne Träger leer Repository Klonen oder zukünftiger git würde das Klonen leeres Repository –

+0

unterstützen Die Version 1.5.6.5, aktuell unter Debian, klont kein emty, bare Repo. –

Antwort

11

Mai hat sein nur eine Git-Repo mit der minimalen Anzahl von Datei in ihm:

ein: .gitignore mit offensichtlich ignorieren Muster in ihm.

Und dann dieses "fast leere" Repository klonen.
Beachten Sie, dass solch ein "fast leeres" Repository ("fast", da es neben dem .git-Verzeichnis noch ein minimales Arbeitsverzeichnis hat) dann "git clone --bare" (wie illustrated here), was es zu einem echten bloßen Repo macht (aber nicht zu einem "leer" eins).
Dies ist das blanke Repo Sie können dann:

  • Klon überall Sie wollen.
  • oder (was noch wichtiger ist) Push-to (da es sich um ein bloßes Repo)

Sie haben in this thread eine gute Zusammenfassung der „umgekehrt“ (was ich als Referenz hier halten).

$ git-init 
$ git-remote add origin server:/pub/git/test.git 

Für ein neues Projekt (noch keinen Code) Ich wollte eine leeren, bloß
Repository (keine Arbeitskopie) auf einem entfernten öffentlichen Server als Ausgang
Punkt machen, klont es lokal, und nach und nach Inhalt lokal erstellen und
Push-out auf dem Remote-Server.

Welchem ​​Junio ​​C Hamano geantwortet:

Sie bereit, eine leere nackten Repository für die Veröffentlichung, und das ist sehr gut.

Der nächste Schritt ist, dass Sie Ihre Inhalte anderswo vorbereiten. Das wäre Ihr privater Arbeitsplatz, d. H. Der Ort, an dem Sie normalerweise arbeiten würden).
Sie drücken von Ihrem privaten Arbeitsplatz in dieses Veröffentlichungs-Repository.
Ihr Arbeitsplatz ist, wo die erste Beglaubigung kommen sollte, da Sie derjenige sind wer das Projekt beginnt.

Beachten Sie, dass der private Arbeitsplatz kein Klon des leeren sein muss. Das ist eigentlich rückwärts. Ihre Arbeit begann von Ihrem privaten Arbeitsplatz zum Verlag.

Sie könnten sogar Ihre privaten Repository klonen zu veröffentlichen ein , um deutlich zu machen, wer der Meister ist und wer die Kopie, wenn Sie wollte, sondern weil Sie schon das bloße Repository für Publishing haben, nur drängen in es ist alles was benötigt wird.

+0

Ich erstelle ein * bare * git Repo, also gibt es * kein * Arbeitsverzeichnis. Vielleicht brauche ich ein Standard "fast leer" Repo an einem Standardplatz, den ich dann zu einem leeren Repo schieben kann? –

+0

Aber sobald Sie ein "fast leeres" Repos erstellen, können Sie es "klonen -" und machen es zu einem echten nackten Repo (http://stackoverflow.com/questions/738154/what-does-git-updating- aktuell-ausgecheckt-branch-warn-mean) – VonC

+0

Wenn ein fast leerer Repo erstellt wird, kann ich auch einfach von diesem zu einem neu initialisierten, leeren Repo wechseln. Wenn es Ihnen nichts ausmacht, den zusätzlichen Gruft von Ihrer Antwort zu kratzen, könnte ich es aufheben :-) –

Verwandte Themen