Si bien esto es bastante antiguo, es extremadamente desaconsejable empujar a un árbol de trabajo. https://git.wiki.kernel.org/index.php/GitFaq#Unexpected_behavior
Un mejor método sería crear un repositorio vacío que refleje el árbol de trabajo del sitio web.
Todo un repositorio simple, es un repositorio sin árbol de trabajo o mejor dicho sin ningún archivo extraído. La jerarquía existe teniendo en cuenta todas las cosas y se puede verificar. En otras palabras, actúa como host solo para cambios.
Sin conocer la jerarquía de directorios que está trabajando para su web, voy a asumir que es un diseño de página web estándar utilizando el hogar chrooted Ejem:/home/usuario/www
En el servidor usando ssh con git instalado:
crear un árbol de trabajo del sitio actual
cd /home/user/public_html
git init
git add .
git commit -m "Initial Commit"
crear un repositorio desnudo a empujar a distancia a partir de su sistema local
mkdir /home/user/deploy.git
cd /home/user/deploy.git
git init --bare
Enlace su repositorio árbol de trabajo y su repositorio implementar desnuda
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
Ahora establecer una nueva operación en el sistema local
git clone ssh://[email protected]/home/user/deploy.git
git branch -a
*master
remotes/origin/HEAD
remotes/origin/master
Ahora configuración 2 ganchos para hacer al instante cambios en su repo remoto web cuando lo presionas o si alguien más a quien le das acceso empuja hacia él. Desde receive.denyCurrentBranch git config ignorar dará lugar a problemas en el largo plazo
En el servidor remoto permitirá posterior a la actualización para implementar
cd /home/user/deploy.git/hooks
mv post-update.sample post-update
vi post-update
Cambiar su gancho posterior a la actualización de la continuación y guardar el
#!/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
Ahora configuramos su árbol de trabajo web para impulsar sus cambios para implementar si algo se ha comprometido a ello.
cd /home/user/public_html/.git/hooks
mv post-commit.sample post-commit
vi post-commit
a continuación, cambiar el gancho post-commit a la siguiente
#!/bin/sh
echo "Pushing changes to deploy [public_html post-commit]"
git push deploy
Usted todavía tiene la opción de pago y envío su árbol de trabajo web, si es necesario. Esto le permitirá sacar sus cambios de la implementación al árbol de trabajo de su web cuando presione el maestro de su sistema local. Puede bifurcar, volver a establecer la base, revertir, etc. sin afectar el árbol de trabajo de su sitio web, sin preocuparse por los marcadores de conflictos, simplemente utilizando el repositorio de despliegue simple. Si necesita más control sobre lo que se ha comprometido, puede usar post-recepción en lugar de o en combinación con la actualización posterior.
Espero que esto ayude a alguien más que busque hacer lo mismo que el OP.
hmm, todo lo que necesitaba era recieve.denyCurrentBranch. Gracias :) – yasar
@ yasar11732, asegúrese de leer la nota sobre cómo mantener actualizado el directorio de trabajo. Sin él, los cambios que presione se reflejarán en el historial de git, pero no necesariamente en la rama desprotegida que es su sitio. – shelhamer
phew, fue un trabajo difícil para mí, pero aún así lo logré. ¡Gracias! – yasar