Pregunta

Quiero usar git para administrar algunos datos en un servidor remoto, así que configuré un repositorio no desnudo allí. Puedo presionarlo sin problemas, y el repositorio en sí se actualiza, pero los archivos reales no se cambian / agregan / eliminan. Tengo que ingresar al servidor y hacer un

git reset --hard HEAD

para que la estructura del archivo se actualice realmente.

¿Qué hacer?

¿Fue útil?

Solución

No deberías hacer esto. Se recomienda tener repositorios desnudos. En otras palabras, no hay archivos desprotegidos, solo el directorio .git en sí. Luego puede retirar el repositorio a otra ubicación en su servidor, por ejemplo, su raíz web. De esta manera, obtienes:

  • git mejores prácticas. De acuerdo con los documentos de Git, puede obtener "resultados inesperados". si no lo sigues Cualquiera que haya hecho una buena programación sabe que "resultados inesperados". este código para "probablemente se comerá a sus hijos y debe evitarse a toda costa".

  • mejor seguridad, si planea tener los archivos desprotegidos en el servidor accesibles desde un servidor web.

  • Modificaciones locales en su código desprotegido, y la capacidad de realizar cambios rápidos en el código desprotegido en vivo. Podría intentar hacer esto directamente en el repositorio, pero sería desordenado y más propenso a errores.

  • La capacidad de actualizar el repositorio de su servidor independientemente de actualizar su código de servicio en vivo. Esto es bastante crucial, si está trabajando de forma remota y necesita enviar algo al servidor y luego hacer más trabajo antes de que esté listo para su servicio en vivo, o si tiene cambios en su código de servicio en vivo (por ejemplo, diferentes configuraciones de configuración ) y necesitan fusionar esos cambios con los cambios en el repositorio, pero no puedo hacerlo ahora.

Recomiendo los siguientes pasos:

  • Siga los documentos de git para configurar un repositorio simple
  • Revise el código de su repositorio a su directorio de destino de servicio en vivo
  • Configure un git hook (post-commit debería ser el IIRC correcto) para actualizar su servicio en vivo cuando se actualice el repositorio. Probablemente debería cd al directorio de servicio en vivo, y hacer un git pull --rebase, y tal vez establecer algunos permisos de archivo.
  • Simplemente empuje su código al repositorio desde su caja de desarrollo de ahora en adelante.

Otros consejos

¡Esto, felizmente, ahora se admite directamente en git! Puede encontrar los detalles en esta respuesta, que acabo de votar:

https://stackoverflow.com/a/38363683/85360

Recomienda configurar el control remoto con

git config receive.denyCurrentBranch updateInstead

para que los resultados empujen a una copia de trabajo actualizada!

Use un enlace posterior a la actualización:

ganchos

Allí puede ejecutar lo que quiera en cada actualización.

Git Versión 1.9.1
Servidor Ubuntu 14.04 LTS
Servidor LAMP

Configuré mi servidor LAMP para actualizar mi directorio de trabajo de mi repositorio Git cada vez que uno de mis desarrolladores web empuja un cambio al servidor. Noté que el registro notaría las nuevas confirmaciones, pero no actualizaría el directorio de trabajo. En lugar de hacerlo manualmente (git checkout -f) para cada actualización, esto se puede configurar automáticamente para que lo haga después de que se haya recibido un envío.

  1. En tu " .git " directorio, vaya al " ganchos " carpeta.
  2. Cree un archivo llamado " post-recepción " dentro de los "ganchos" carpeta con este contenido:

    #! / bin / sh

    # Actualizar el directorio de trabajo después de recibir un envío de clientes remotos.
     # Esto debe dirigirse al directorio de trabajo de git.

    GIT_WORK_TREE = / var / www / dev_site git checkout -f

  3. Habilite los permisos para ejecutar el archivo escribiendo '' chmod + x post-recepción '' en los "ganchos" carpeta.

Ahora actualizará el directorio de trabajo cuando las confirmaciones se envíen al repositorio de Git. Mi sitio ahora muestra los cambios cuando lo visito en un navegador.

Mi directorio de trabajo es / var / www / dev_site

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top