Bien que ce soit plutôt ancien, il est extrêmement déconseillé de pousser jusqu'à un arbre qui fonctionne. https://git.wiki.kernel.org/index.php/GitFaq#Unexpected_behavior
Une meilleure méthode serait de créer un repo nu reflétant l'arbre de travail du site.
Tout un repo nu est, est un référentiel sans arbre de travail ou plutôt sans aucun fichier extrait. La hiérarchie existe tout compte fait et peut être vérifiée. En d'autres termes, il agit comme un hôte pour les modifications uniquement.
Sans connaître la hiérarchie des répertoires que vous travaillez avec votre web, je vais supposer qu'il est une mise en page d'un site Web standard en utilisant la maison chroot EG:/home/user/www
Sur le serveur en utilisant ssh avec git installé:
Créer un arbre de travail du site actuel
cd /home/user/public_html
git init
git add .
git commit -m "Initial Commit"
Créez un dépôt nu à pousser à distance à partir de votre système local
mkdir /home/user/deploy.git
cd /home/user/deploy.git
git init --bare
Lien votre référentiel d'arbre de travail et votre référentiel deploy nu
cd /home/user/public_html
git remote add deploy /home/user/deploy.git
git remote show deploy
* remote deploy
URL: /home/user/deploy.git
git push deploy master
maintenant mis en place un nouveau repo sur votre système local
git clone ssh://[email protected]/home/user/deploy.git
git branch -a
*master
remotes/origin/HEAD
remotes/origin/master
Maintenant, nous installons 2 crochets pour faire instantanément des changements à votre web repo à distance quand vous poussez dessus ou si quelqu'un d'autre vous donne accès à la pousser. Depuis ignorer receive.denyCurrentBranch git config conduira à des problèmes à long terme
Sur le serveur distant activer post-mise à jour pour déployer
cd /home/user/deploy.git/hooks
mv post-update.sample post-update
vi post-update
Changer votre crochet post-mise à jour du dessous et enregistrer
#!/bin/sh
echo "Pulling changes into public_html [deploy post-update]"
cd /home/user/public_html || exit
unset GIT_DIR
git pull deploy master
exec git update-server-info
Maintenant, nous configurons votre arborescence de travail Web pour que ses modifications soient déployées si quelque chose est engagé.
cd /home/user/public_html/.git/hooks
mv post-commit.sample post-commit
vi post-commit
changer ensuite post-commit hook à la
#!/bin/sh
echo "Pushing changes to deploy [public_html post-commit]"
git push deploy
suivant Vous avez toujours la possibilité de extrayez votre arbre de travail Web si vous avez besoin. Cela vous permettra de retirer vos modifications du déploiement à l'arborescence de travail de votre site Web lorsque vous appuierez le maître de votre système local. Vous pouvez effectuer des branchements, des rebasages, des restaurations, etc., sans affecter l'arborescence de travail de votre site Web, sans vous soucier des marqueurs de conflit, en utilisant simplement le référentiel de déploiement strict. Si vous avez besoin de plus de contrôle sur ce qui est engagé, vous pouvez utiliser la post-réception au lieu de ou après la mise à jour.
Espérons que cela aide quelqu'un d'autre à faire la même chose que l'OP.
hmm, tout ce dont j'avais besoin était recieve.denyCurrentBranch. Merci :) – yasar
@ yasar11732, assurez-vous de lire la note sur la mise à jour du répertoire de travail. Sans cela, les changements que vous appuierez seront reflétés dans l'historique git mais pas nécessairement dans la branche empruntée qui est votre site. – shelhamer
ouf, c'était un travail difficile pour moi, mais je l'ai quand même réussi. Merci! – yasar