J'ai un projet sur lequel j'ai créé un référentiel git:
$ cd myproject
$ git init
$ git add .
$ git commit
Je voulais créer un clone nu sur une autre machine:
$ cd ..
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
J'ai exécuté le clone mais n'ai imprimé aucune réponse. Je me suis connecté à la machine serveur et j'ai essayé de voir comment les fichiers sont stockés. Le chemin / GitRepos était vide, j'ai donc décidé de refaire le clone:
$ git clone --bare myproject ssh://user@server:/GitRepos/myproject.git
Cette fois, la réponse fut:
fatal: le chemin de destination 'ssh: // user @ server: /GitRepos/myproject.git' existe déjà et n'est pas un répertoire vide.
Mais j'ai vu que le chemin était vide.
Que se passe t-il ici ?
git clone --bare
fera ce que vous pensez qu'il fera.Réponses:
Ceci n'est peut-être pas directement lié à la question; mais une erreur que je viens de faire moi-même, et je vois dans l'OP, est la spécification d'URL
ssh://user@server:/GitRepos/myproject.git
- à savoir, vous avez à la fois un deux-points:
et une barre oblique/
après cela signifiant un chemin absolu.J'ai ensuite trouvé le clone Git, ssh: Impossible de résoudre le nom d'hôte - git, développement - Nicolas Kuttler (car c'était l'erreur que j'obtenais, sur la
git
version 1.7.9.5), notant:... qui était aussi mon problème! Donc , fondamentalement , dans
git
avecssh
, soit vous utilisationssh://[email protected]/absolute/path/to/repo.git/
- juste une barre oblique pour le chemin absolu sur le serveur[email protected]:relative/path/to/repo.git/
- juste deux points (il ne doit pas avoir lessh://
chemin relatif pour sur le serveur (par rapport au répertoire personnel de lausername
machine serveur)J'espère que cela aide quelqu'un,
Cheers!
la source
ssh://
préfixe. Je viens de passer 20 minutes à essayer de comprendre cela.git clone [email protected]:relative/path/to/repo.git/
devrait marcher.Pour les référentiels sur GitHub, essayez:
Pour configurer git pour cloner via ssh, voir:
Génération de clés SSH et ajoutez votre clé générée dans Paramètres du compte -> Clés SSH
Clonage avec SSH
la source
Vous devez exécuter la commande clone sur ce que vous appelez le serveur. Mais je parie que vous n'exécutez pas de serveur ssh sur votre client local, ce qui ne fonctionnera pas de toute façon. Je vous suggère de suivre cette approche (consultez le manuel car je le fais de mémoire)
git init --bare
git remote add origin ssh://user@server:/GitRepos/myproject.git
suivi pargit push origin master
la source
Avertissement: Ceci est juste une copie d'un commentaire de bobbaluba rendu plus visible pour les futurs visiteurs. Cela m'a aidé plus que toute autre réponse.
Vous devez supprimer le
ssh://
préfixe lors de l'utilisationgit clone
comme exemplela source
essaye ça.
Étape 1:
Étape 2:
(en utilisant la touche entrée pour la valeur par défaut) Étape 3: pour configurer le fichier de configuration
Étape 4:
Étape 5:
Lorsque vous avez terminé l'étape 4
1. le fichier test2.git sera téléchargé
2. vous obtiendrez le nouveau fichier (known_hosts) dans le ~ / .ssh
PS: je crée id_rsa et id_rsa.ub par meself et je le remets au serveur Gitlab. en utilisant les deux clés vers n'importe quel côté client (Windows et Linux).
la source
Git 101:
git
est un système de contrôle de version décentralisé. Vous n'avez pas besoin d'un serveur pour être opérationnel avec git. Pourtant, vous voudrez peut-être faire cela car il a l'air cool, non? (Il est également utile si vous souhaitez travailler sur un seul projet à partir de plusieurs ordinateurs.)Donc, pour faire fonctionner un "serveur", vous devez l'exécuter
git init --bare <your_project>.git
car cela créera un référentiel vide, que vous pourrez ensuite importer sur vos machines sans avoir à fouiller dans les fichiers de configuration de votre répertoire.git
.Après cela, vous pouvez cloner le référentiel sur vos clients car il est censé fonctionner, mais j'ai constaté que certains clients (à savoir
git-gui
) ne parviendront pas à cloner un référentiel complètement vide. Pour contourner ce problème, vous devez exécutercd <your_project>.git && touch <some_random_file> && git add <some_random_file> && git commit && git push origin master
. (Notez que vous devrez peut-être configurer votre nom d'utilisateur et votre e-mail pour le git de cette machine si vous ne l'avez pas déjà fait dans le passé. Les commandes réelles à exécuter seront dans le message d'erreur que vous obtenez, je vais donc les omettre.)Donc, à ce stade, vous pouvez cloner le référentiel sur n'importe quelle machine simplement en exécutant
git clone <user>@<server>:<relative_path><your_project>.git
. (Comme d'autres l'ont souligné, vous devrez peut-être le préfixerssh://
si vous utilisez le chemin absolu.) Cela suppose que vous pouvez déjà vous connecter de votre client au serveur. (Vous obtiendrez également des points bonus pour la configuration d'un fichier de configuration et des clés pourssh
, si vous avez l'intention de pousser beaucoup de choses vers le serveur distant.)Quelques liens pertinents:
cela vous indique à peu près ce que vous devez savoir.
Et c'est pour ceux qui connaissent le fonctionnement de base de git mais oublient parfois la syntaxe exacte.
la source
Je veux tenter une réponse qui inclut git-flow, et trois «points» ou cas d'utilisation, le référentiel central git, le développement local et la machine de production. Ce n'est pas bien testé .
Je donne des commandes incroyablement spécifiques. Au lieu de dire
<your folder>
, je dirai/root/git
. Le seul endroit où je modifie la commande d'origine est de remplacer mon nom de serveur spécifique parexample.com
. Je vais expliquer le but des dossiers afin que vous puissiez l'ajuster en conséquence. Veuillez me faire part de toute confusion et je mettrai à jour la réponse.La version git sur le serveur est 1.7.1. Le serveur est CentOS 6.3 (Final).
La version git sur la machine de développement est 1.8.1.1. Il s'agit de Mac OS X 10.8.4.
Le référentiel central et la machine de production sont sur la même machine.
le référentiel central, auquel les utilisateurs svn peuvent associer en tant que «serveur» est configuré comme suit. J'ai un dossier
/root/git
où je garde tous mes dépôts git. Je veux créer un référentiel git pour un projet que j'appelle «fleurs».La commande git a donné deux messages:
Rien à craindre.
Sur la machine de développement est configurée comme suit. J'ai un dossier
/home/kinjal/Sites
où je mets tous mes projets. Je veux maintenant obtenir le référentiel central git.Cela m'amène à un point où je peux commencer à y ajouter des choses. J'ai d'abord configuré Git Flow
Par défaut, c'est sur la branche
develop
. J'ajoute mon code ici, maintenant. Ensuite, je dois m'engager dans le référentiel central git.À ce stade, il a poussé la branche de développement. Je veux également l'ajouter à la branche principale.
Notez que je n'ai rien fait entre le début et la fin de la version. Et lorsque j'ai terminé la sortie, j'ai été invité à modifier deux fichiers. Cela a poussé la branche de développement à maîtriser.
Sur le site de production, qui se trouve sur la même machine que mon référentiel central git, je veux mettre le référentiel dedans
/var/www/vhosts/example.net
. Je l'ai déjà/var/www/vhosts
.Si la machine de production devait également se trouver sur une autre machine, la
git clone
commande ressemblerait à celle utilisée sur la machine de développement.la source
Au départ, je manque un peu de mes compétences GIT.
Cela va cloner un référentiel nu sur votre machine, qui ne contient que les dossiers dans
.git
lesquels se trouve un répertoire caché. exécutezls -al
et vous devriez voir.git
ou à l'cd .git
intérieur de votre référentiel.Pouvez-vous ajouter une description de votre intention afin qu'une personne possédant plus de compétences GIT puisse vous aider? Qu'est-ce que vous voulez vraiment faire, pas comment vous comptez le faire?
la source
J'ai fait: git clone --bare "/ GITREPOSITORIES / RepoA" "ssh: // luc @ EERSTENASDS119J / volume1 / RepoA" Résultat: fatal: chemin de destination 'ssh: // luc @ EERSTENASDS119J / volume1 / RepoA' existe déjà et est pas un répertoire vide.
Le système a créé un répertoire ssh: // luc @ EERSTENASDS119J / volume1 / RepoA dans mon chemin actuel.
Donc, git clone n'a pas interprété la spécification d'URL. Utilisé la solution de contournement d'Alec.
la source
git clone git @ server: Exemple / proyect.git
la source