319 votes

git clone via ssh

Je suis nouveau sur le git.

J'ai un projet sur lequel j'ai créé un dépôt git :

$ cd myproject  
$ git init  
$ git add .  
$ git commit  

Je le voulais pour créer un nu-clone sur une autre machine :

$ cd ..  
$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git  

J'ai exécuté le clone, mais n'a pas l'impression d'obtenir une réponse. Je me suis connecté sur le serveur de la machine et a essayé de voir comment sont stockés les fichiers. Le chemin d'accès /GitRepos était vide, j'ai donc décidé de faire le clone de nouveau:

$ git clone --bare myproject  ssh://user@server:/GitRepos/myproject.git

Cette fois, la réponse a été :

fatal: destination path 'ssh://user@server:/GitRepos/myproject.git' already exists and is not an empty directory.

Mais j'ai vu que le chemin était vide.
Ce qui se passe ici ?

278voto

sdaau Points 6262

C'est peut-être pas liés directement à la question; mais c'est une erreur que je viens de faire moi-même, et je vois dans le po, est l'URL de la spécification ssh://user@server:/GitRepos/myproject.git - à savoir, vous avez un colon :, et une barre oblique / après qu'il soit un chemin absolu.

J'ai ensuite trouvé Git clone, ssh: impossible de résoudre le nom d'hôte – git , développement – Nicolas Kuttler (comme c'était l'erreur que je recevais, git version 1.7.9.5), en précisant:

Le problème avec la commande que j'ai utilisé était initialement que j'ai essayé d'utiliser un scp-syntaxe.

... qui fut aussi mon problème! Donc, fondamentalement, en git avec ssh, soit vous l'utilisez

  • ssh://username@host.xz/absolute/path/to/repo.git/ - juste une barre oblique pour le chemin absolu sur le serveur
  • username@host.xz:relative/path/to/repo.git/ - juste un signe deux-points (il ne doit pas avoir l' ssh:// pour le chemin relatif sur le serveur (par rapport au répertoire home de l' username sur la machine serveur)

Espérons que cela aide quelqu'un,
Cheers!

196voto

dsrdakota Points 118

Pour les dépôts sur GitHub, essayez:

git clone ssh://git@github.com/<user>/<repository name>.git

Pour la configuration de git clone via ssh, voir:

52voto

Alec the Geek Points 1107

Vous devez exécuter la commande clone sur ce que vous appelez le serveur. Mais je parie que vous n'êtes pas en cours d'exécution d'un serveur ssh sur votre client local, donc ça ne marchera pas de toute façon. Vous proposons de suivre cette approche (consultez le manuel car je fais ça de mémoire)

  1. Connectez-vous au serveur de la machine.
  2. Créer un nu-repo à l'aide de git init --bare
  3. Sur l'ordinateur client, vous pouvez pousser votre repo pour le serveur. git remote add origin ssh://user@server:/GitRepos/myproject.git suivie par git push origin master

4voto

Wolfer Points 124

Git 101:

git est décentralisé système de contrôle de version. Vous n'avez pas besoin un serveur de se lever et courir avec git. Encore, vous pouvez le faire comme il a l'air cool, non? (Il est également utile si vous souhaitez travailler sur un seul projet à partir de plusieurs ordinateurs.)

Donc, pour obtenir un "serveur" en cours d'exécution, vous devez exécuter git init --bare <your_project>.git que cela va créer un dépôt vide, que vous pouvez ensuite importer sur vos machines sans avoir à muck autour de dans les fichiers de configuration dans votre .git dir.

Après cela, vous pourriez cloner le repo sur vos clients, car c'est censé fonctionner, mais j'ai trouvé que certains clients (à savoir, git-gui) ne parviennent pas à cloner un repo qui est complètement vide. Pour contourner ce problème, vous devez exécuter cd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master. (Notez que vous pourriez avoir besoin pour configurer votre nom d'utilisateur et l'adresse électronique de la machine de git si vous n'aviez pas fait dans le passé. Les commandes à exécuter pour exécuter sera dans le message d'erreur que vous obtenez alors je vais juste les ignorer.)

Donc, à ce stade, vous pouvez cloner le dépôt à n'importe quel ordinateur simplement en exécutant git clone <user>@<server>:<relative_path><your_project>.git. (Comme d'autres l'ont souligné, vous pourriez avoir besoin de le préfixer avec ssh:// si vous utilisez le chemin d'accès absolu.) Cela suppose que vous pouvez déjà vous connecter à partir de votre client vers le serveur. (Vous pourrez également obtenir des points bonus pour la création d'un fichier de configuration et les clés pour ssh, si vous avez l'intention de pousser un tas de trucs sur le serveur distant.)

Quelques liens pertinents:
Ce joli beaucoup vous indique ce que vous devez savoir.
Et c'est pour ceux qui connaissent le fonctionnement de base de git, mais parfois oublier la syntaxe exacte.

1voto

Andrew Finnell Points 9013

D'avance, je suis un peu défaut dans mon GIT compétences.

Qui va cloner un dépôt nu sur votre machine, qui ne contient que les dossiers dans .git qui est un répertoire caché. exécuter ls -al et vous devriez voir .git ou cd .git à l'intérieur de votre référentiel.

Pouvez-vous ajouter une description de votre intention de sorte que quelqu'un avec plus de GIT compétences peut vous aider? Qu'est-ce que vous voulez vraiment faire pas la façon dont vous prévoyez de le faire?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X