63 votes

Comment pousser un dépôt Git vers un dossier par SSH ?

J'ai un dossier appelé mon-projet dans lequel j'ai fait git init , git commit -a etc.

Maintenant, je veux le pousser vers un dossier vide dans /mnt/foo/bar sur un serveur distant.

Comment puis-je le faire ?

J'ai essayé, en me basant sur ce que j'avais lu :

cd my-project
git remote add origin ssh://user@host/mnt/foo/bar/my-project.git
git push origin master

ce qui ne semble pas correct (je pensais que la source viendrait avant la destination) et cela a échoué :

fatal: '/mnt/boxee/git/midwinter-physiotherapy.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

J'aimerais que cela fonctionne de telle sorte que je n'aie pas à accéder à l'hôte distant et à lancer manuellement un dépôt Git à chaque fois... Dois-je le faire ? Est-ce que je suis sur la bonne voie ?

Gracias.

65voto

James Mertz Points 390

La commande est correcte, mais l'adresse distante doit aussi pointer vers un dépôt Git initialisé. C'est un travail unique, cependant.

ssh user@host "git init --bare /mnt/foo/bar/my-project.git"

(Dans Git, un dépôt "nu" est un dépôt sans arbre de travail).

16voto

Kyle Chadha Points 281

Si vous voulez à la fois pousser vers le repo et faire en sorte que les fichiers soient mis à jour sur le serveur vous pouvez créer un hook git côté serveur pour extraire les fichiers après qu'ils aient été poussés. Dans le serveur côté git /hooks/ créer un fichier nommé post-receive et ajoutez le code suivant (en mettant à jour les répertoires pour correspondre à votre structure de dossiers) :

#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

Ensuite, donnez au fichier les permissions appropriées en utilisant chmod +x post-receive

Plus d'informations et une explication détaillée ici : https://www.digitalocean.com/community/tutorials/how-to-set-up-automatic-deployment-with-git-with-a-vps

3voto

Alcalyn Points 131

Pour moi, j'ai dû utiliser ssh://user@host:/mnt/foo/bar/my-project (notez le : après l'hôte, et supprimer .git à la fin).

Donc je pourrais cloner un dépôt avec :

git clone ssh://user@host:/mnt/foo/bar/my-project

Nous pouvons également noter que le format est comme l'utilisation de scp commandement.

2voto

Tyler Griffiths Points 11

Si vous ne voulez pas créer le référentiel manuellement sur le serveur, vous pouvez installer gitosis qui permettra d'automatiser le processus. Mais vous devez avoir un processus sur le serveur pour créer le dépôt -- vous ne pouvez pas le faire par une connexion git ssh depuis le client.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X