Wie kann man ein Git-Repository in einen bestimmten Ordner klonen?

Wenn ich den Befehl git clone git@github.com:whatever ausführe, wird in meinem aktuellen Ordner ein Verzeichnis mit dem Namen "wie auch immer" erstellt, und der Inhalt des Git-Repositorys wird in diesem Ordner abgelegt:

/httpdocs/whatever/public

Mein Problem ist, dass ich die Inhalte des Git-Repositorys in mein aktuelles Verzeichnis klonen muss, damit sie am richtigen Ort für den Webserver erscheinen:

/httpdocs/public

Ich weiß, wie ich die Dateien verschieben kann, nachdem ich das Repository geklont habe, aber das scheint Git zu brechen, und ich möchte in der Lage sein, einfach durch den Aufruf von git pull zu aktualisieren. Wie kann ich das tun?

Lösung

Option A:

git clone git@github.com:whatever folder-name

Ergo, für "gleich hier" verwenden:

git clone git@github.com:whatever .

Option B:

Verschieben Sie auch den Ordner .git. Beachten Sie, dass der Ordner .git in den meisten grafischen Dateiexplorern versteckt ist, stellen Sie also sicher, dass versteckte Dateien angezeigt werden.

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

Die erste Zeile erfasst alle normalen Dateien, die zweite Zeile erfasst die Punktdateien. Es ist auch möglich, dies in einer Zeile zu tun, indem man dotglob aktiviert (d.h. shopt -s dotglob), aber das ist wahrscheinlich eine schlechte Lösung, wenn Sie die Frage stellen, die diese Antwort beantwortet.

Besser noch:

Legen Sie Ihre Arbeitskopie an einem anderen Ort ab und erstellen Sie einen symbolischen Link. Etwa so:

ln -s /where/it/is/right/now /the/path/I/want/to/use

In Ihrem Fall wäre das etwa so:

ln -sfn /opt/projectA/prod/public /httpdocs/public

Was leicht in test geändert werden könnte, wenn Sie es wünschen, d.h.:

ln -sfn /opt/projectA/test/public /httpdocs/public

ohne Dateien zu verschieben. Hinzugefügt wurde -fn für den Fall, dass jemand diese Zeilen kopiert (-f ist force, -n vermeidet einige oft unerwünschte Interaktionen mit bereits und nicht existierenden Links).

Wenn Sie nur wollen, dass es funktioniert, verwenden Sie Option A, wenn jemand anderes sich ansehen will, was Sie getan haben, verwenden Sie Option C.

Kommentare (18)

Ich glaube, viele Fragesteller wollen folgendes Beispiel. Wenn Sie sich in dem Verzeichnis befinden, in das Sie den Inhalt des Git-Repositorys auslagern wollen, führen Sie aus:

git clone git@github.com:whatever .

Das "." am Ende gibt den aktuellen Ordner als Checkout-Ordner an.

Kommentare (7)

Wenn Sie die Dateien dorthin verschieben, wo Sie sie haben wollen, verschieben Sie dann auch das .git-Verzeichnis? Abhängig von Ihrem Betriebssystem und Ihrer Konfiguration kann dieses Verzeichnis versteckt sein.

Es enthält das Projektarchiv und die unterstützenden Dateien, während die Projektdateien in Ihrem /public-Verzeichnis nur die Versionen der aktuell ausgecheckten Übergabe (standardmäßig der Master-Zweig) sind.

Kommentare (0)