Ich habe ein Projekt, für das ich ein Git-Repository erstellt habe:
$ cd myproject
$ git init
$ git add .
$ git commit
Ich wollte einen nackten Klon auf einem anderen Computer erstellen:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Ich habe den Klon ausgeführt, aber keine Antwort gedruckt. Ich habe mich am Server angemeldet und versucht zu sehen, wie die Dateien gespeichert sind. Der Pfad / GitRepos war leer, daher habe ich beschlossen, den Klon erneut durchzuführen:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Diesmal war die Antwort:
fatal: Zielpfad 'ssh: // user @ server: /GitRepos/myproject.git' existiert bereits und ist kein leeres Verzeichnis.
Aber ich sah, dass der Weg leer war.
Was ist denn hier los ?
git clone --bare
das tun wird, was du denkst.Antworten:
Dies hängt möglicherweise nicht direkt mit der Frage zusammen. Ein Fehler, den ich gerade selbst gemacht habe und den ich im OP sehe, ist die URL-Angabe
ssh://user@server:/GitRepos/myproject.git
- Sie haben sowohl einen Doppelpunkt:
als auch einen Schrägstrich,/
nachdem dies einen absoluten Pfad bedeutet.Ich fand dann Git-Klon, ssh: Hostname - Git, Entwicklung - Nicolas Kuttler konnte nicht aufgelöst werden (da dies der Fehler war, den ich in
git
Version 1.7.9.5 erhielt).... das war auch mein Problem! Also im Grunde genommen
git
mitssh
, verwenden Sie entwederssh://[email protected]/absolute/path/to/repo.git/
- Nur ein Schrägstrich für den absoluten Pfad auf dem Server[email protected]:relative/path/to/repo.git/
- nur ein Doppelpunkt (er darf nicht denssh://
relativen Pfad auf dem Server haben (relativ zum Ausgangsverzeichnisusername
auf dem Server)Hoffe das hilft jemandem,
Prost!
quelle
ssh://
Präfix verlieren . Ich habe gerade 20 Minuten damit verbracht, das herauszufinden.git clone [email protected]:relative/path/to/repo.git/
sollte arbeiten.Versuchen Sie für Repositorys auf GitHub:
Informationen zum Einrichten von git zum Klonen über ssh finden Sie unter:
Generieren von SSH-Schlüsseln und Hinzufügen Ihres generierten Schlüssels unter Kontoeinstellungen -> SSH-Schlüssel
Klonen mit SSH
quelle
Sie müssen den Befehl clone auf dem Server ausführen, den Sie aufrufen. Aber ich wette, Sie betreiben keinen SSH-Server auf Ihrem lokalen Client, so dass dies sowieso nicht funktioniert. Schlagen Sie vor, diesen Ansatz zu befolgen (überprüfen Sie das Handbuch, da ich dies aus dem Speicher mache).
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
gefolgt vongit push origin master
quelle
Haftungsausschluss: Dies ist nur eine Kopie eines Kommentars von Bobbaluba, der für zukünftige Besucher sichtbarer wird. Es hat mir mehr geholfen als jede andere Antwort.
Sie müssen das
ssh://
Präfix löschen, wenn Sie esgit clone
als Beispiel verwendenquelle
Versuche dies.
Schritt 1:
Schritt 2:
(Verwenden der Eingabetaste als Standardwert) Schritt 3: Einrichten der Konfigurationsdatei
Schritt 4:
Schritt 5:
Wenn Sie Schritt 4 abgeschlossen haben
1. 1.Die Datei test2.git wird heruntergeladen.
2. Sie erhalten die neue Datei (bekannte_Hosts) in der Datei ~ / .ssh
PS: Ich erstelle die Dateien id_rsa und id_rsa.ub selbst und liefere sie an den Gitlab-Server. Verwenden beider Schlüssel für alle Clientseiten (Windows und Linux).
quelle
Git 101:
git
ist ein dezentrales Versionskontrollsystem. Sie benötigen keinen Server, um mit git arbeiten zu können. Vielleicht möchten Sie das trotzdem tun, da es cool aussieht, oder? (Dies ist auch nützlich, wenn Sie an einem einzelnen Projekt von mehreren Computern aus arbeiten möchten.)Um einen "Server" zum Laufen zu bringen, müssen Sie ihn ausführen,
git init --bare <your_project>.git
da dadurch ein leeres Repository erstellt wird, das Sie dann auf Ihre Computer importieren können, ohne in Konfigurationsdateien in Ihrem.git
Verzeichnis herumspielen zu müssen.Danach könnten Sie das Repo auf Ihren Clients klonen, da es funktionieren soll, aber ich habe festgestellt, dass einige Clients (nämlich
git-gui
) ein Repo, das vollständig leer ist, nicht klonen können. Um dies zu umgehen, müssen Sie ausführencd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Beachten Sie, dass Sie möglicherweise Ihren Benutzernamen und Ihre E-Mail-Adresse für das Git dieses Computers konfigurieren müssen, wenn Sie dies in der Vergangenheit nicht getan haben. Die tatsächlich auszuführenden Befehle befinden sich in der Fehlermeldung, die Sie erhalten, sodass ich sie einfach weglasse.)An diesem Punkt können Sie das Repository also einfach durch Ausführen auf einen beliebigen Computer klonen
git clone <user>@<server>:<relative_path><your_project>.git
. (Wie andere bereits erwähnt haben, müssen Sie ihm möglicherweise ein Präfix voranstellen,ssh://
wenn Sie den absoluten Pfad verwenden.) Dies setzt voraus, dass Sie sich bereits von Ihrem Client beim Server anmelden können. (Sie erhalten auch Bonuspunkte für das Einrichten einer Konfigurationsdatei und von Schlüsseln fürssh
, wenn Sie beabsichtigen, viele Dinge auf den Remote-Server zu übertragen.)Einige relevante Links:
Hier erfahren Sie ziemlich genau, was Sie wissen müssen.
Und dies ist für diejenigen, die die Grundfunktionen von Git kennen, aber manchmal die genaue Syntax vergessen.
quelle
Ich möchte eine Antwort versuchen, die Git-Flow und drei "Punkte" oder Anwendungsfälle, das zentrale Git-Repository, die lokale Entwicklung und die Produktionsmaschine enthält. Dies ist nicht gut getestet .
Ich gebe unglaublich spezifische Befehle. Anstatt zu sagen
<your folder>
, werde ich sagen/root/git
. Der einzige Ort, an dem ich den ursprünglichen Befehl ändere, ist das Ersetzen meines spezifischen Servernamens durchexample.com
. Ich werde den Zweck des Ordners erläutern, damit Sie ihn entsprechend anpassen können. Bitte lassen Sie mich über Verwirrung wissen und ich werde die Antwort aktualisieren.Die Git-Version auf dem Server ist 1.7.1. Der Server ist CentOS 6.3 (Final).
Die Git-Version auf dem Entwicklungscomputer ist 1.8.1.1. Dies ist Mac OS X 10.8.4.
Das zentrale Repository und die Produktionsmaschine befinden sich auf derselben Maschine.
Das zentrale Repository, auf das SVN-Benutzer als "Server" verweisen können, ist wie folgt konfiguriert. Ich habe einen Ordner,
/root/git
in dem ich alle meine Git-Repositorys aufbewahre. Ich möchte ein Git-Repository für ein Projekt erstellen, das ich "Blumen" nenne.Der Befehl git gab zwei Meldungen aus:
Nichts, über das man sich sorgen sollte.
Auf dem Entwicklungscomputer ist wie folgt konfiguriert. Ich habe einen Ordner,
/home/kinjal/Sites
in dem ich alle meine Projekte ablege. Ich möchte jetzt das zentrale Git-Repository erhalten.Dies bringt mich zu einem Punkt, an dem ich anfangen kann, Dinge hinzuzufügen. Ich habe zuerst den Git Flow eingerichtet
Standardmäßig ist dies ein Zweig
develop
. Ich füge jetzt hier meinen Code hinzu. Dann muss ich mich auf das zentrale Git-Repository festlegen.Zu diesem Zeitpunkt drängte es auf den Entwicklungszweig. Ich möchte dies auch zum Hauptzweig hinzufügen.
Beachten Sie, dass ich zwischen dem Start und dem Ende der Veröffentlichung nichts getan habe. Und als ich die Veröffentlichung beendet hatte, wurde ich aufgefordert, zwei Dateien zu bearbeiten. Dies brachte den Entwicklungszweig zum Master.
Auf der Produktionsstätte, die sich auf demselben Computer wie mein zentrales Git-Repository befindet, möchte ich das Repository ablegen
/var/www/vhosts/example.net
. Ich habe bereits/var/www/vhosts
.Wenn sich die Produktionsmaschine auch auf einer anderen Maschine befinden würde, würde der
git clone
Befehl wie der auf der Entwicklungsmaschine verwendete aussehen.quelle
Im Voraus fehlen mir ein bisschen meine GIT-Fähigkeiten.
Dadurch wird ein nacktes Repository auf Ihrem Computer geklont, das nur die Ordner enthält, in
.git
denen sich ein verstecktes Verzeichnis befindet. ausführenls -al
und Sie sollten sehen.git
odercd .git
in Ihrem Repository.Können Sie eine Beschreibung Ihrer Absicht hinzufügen, damit jemand mit mehr GIT-Kenntnissen helfen kann? Was möchten Sie wirklich tun, nicht wie Sie es vorhaben?
quelle
Ich habe: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Ergebnis: fatal: Zielpfad 'ssh: // luc @ EERSTENASDS119J / volume1 / RepoA' existiert bereits und ist kein leeres Verzeichnis.
Das System hat in meinem aktuellen Pfad ein Verzeichnis ssh: // luc @ EERSTENASDS119J / volume1 / RepoA erstellt.
Der Git-Klon hat die URL-Spezifikation also nicht interpretiert. Verwendete die Problemumgehung von Alec.
quelle
git clone git @ server: Beispiel / proyect.git
quelle