Comment puis-je pousser un référentiel Git dans un dossier sur SSH?


53

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

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

Comment puis-je faire ceci?

J'ai essayé, d'après 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 semblait pas juste (je suppose 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 sorte que je n'ai pas besoin d'accéder à l'hôte distant et d'initier manuellement un référentiel Git à chaque fois ... dois-je le faire? Est-ce que je vais dans la bonne voie?

Merci.

Réponses:


56

La commande est correcte. Cependant, l'adresse distante doit aussi pointer vers un référentiel Git initialisé. C'est un travail ponctuel, cependant.

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

(Dans Git, un référentiel "nu" en est un sans arbre de travail.)


11

Si vous voulez à la fois pousser vers le référentiel et mettre les fichiers à jour sur le serveur , vous pouvez créer un hook git côté serveur pour extraire les fichiers après leur envoi. Dans le répertoire git côté serveur , /hooks/créez un fichier nommé post-receiveet ajoutez le code suivant (mettez à jour les répertoires pour qu'ils correspondent à votre structure de dossiers):

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

Puis donnez les autorisations appropriées au fichier 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


2

Si vous ne souhaitez pas créer le référentiel manuellement sur le serveur, vous pouvez installer gitosis , qui automatisera le processus. Mais vous devez avoir un processus sur le serveur pour créer le référentiel - vous ne pouvez pas le faire via une connexion git ssh du client.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.