Estoy usando git para rastrear un proyecto, y si es posible, me gustaría configurar las cosas para que git maneje todas las etapas de código, puedo tener un repositorio local para probar y luego enviar cambios al servidor con git para hacerlos vivir. Sin embargo, al tratar de usar las llamadas estándar git push
, acabo terminando con una bifurcación inconsistente y un lío terrible de historias conflictivas. ¿Hay alguna manera de gestionar la puesta en escena usando git?¿Puedo usar git para mantener un servidor remoto actualizado?
Respuesta
Usted tiene en este blog post un ejemplo de Git repo utilizada para la estadificación:
IDE => local Git repository => remote bare Git repository
=> Git repository with the live web application
se trata de un gancho posterior a la actualización en el lado de recompra desnuda, con el fin de activar la actualización de la cesión temporal en el vivo lado del servidor web.
El último paso es definir la secuencia de comandos de enlace "post-actualización" en el repositorio simple, que se invoca cuando el repositorio simple recibe datos.
Para activar el enlace "post-actualización", tenemos que hacerhooks/post-update
ejecutable o renombrarhooks/post-update.sample
ahooks/post-update
, dependiendo de la versión de Git.
En este script, simplemente cambie a la carpeta de la aplicación en vivo, e iniciar la operación de extracción:
#!/bin/sh
cd $HOME/example.org
unset GIT_DIR
git pull bare master
exec git-update-server-info
La razón por la que hay un acuerdo de recompra a distancia desnudo es porque está “desanimado” a hacer un push en un repositorio con un directorio de trabajo.
Aunque git es un sistema de control de versiones distribuidas, generalmente es una buena idea tener un repositorio central (podría ser uno --bare
). Simplificará las cosas.
Sí, pero ¿cómo ayuda esto con tener que gestionar una sucursal de etapas y una sucursal de producción y una o más ramas de desarrollo? – Thilo
¿Debo tener un repositorio central, clonarlo tanto localmente como en el servidor activo, y luego SSH en y hacer extracciones manuales para actualizar? Eso tiene sentido, pero parece que debería haber una solución más elegante. – futuraprime
Un depósito central desnudo en el servidor en vivo sería suficiente. Dado que tienes historias conflictivas, supongo que realizas algunos cambios en el sitio de producción. Si hacer eso te parece conveniente, entonces las tiradas manuales deberían estar bien. Si puede continuar sin dichos cambios, use el enlace posterior a la actualización según lo sugerido por VonC. –
- 1. Mantener directorio remoto Actualizado
- 2. ¿Cómo se puede mantener mongo corriendo en un servidor remoto?
- 3. RequestDispatcher para servidor remoto?
- 4. git workflow para mantener actualizado el software de código abierto modificado a la medida?
- 5. ¿Tirando automáticamente del servidor remoto con Git push?
- 6. ¿Cómo usar git-bundle para mantener el desarrollo sincronizado?
- 7. copie un repositorio git sin revisiones (sin .git y .gitingore) desde un servidor remoto
- 8. ¿Cómo puedo mantener un NSPathControl actualizado con la ruta de la celda seleccionada en un NSBrowser
- 9. Acceso a un servidor MBean remoto
- 10. git sin la carpeta .git - un git-dir remoto
- 11. ¿Puedo marcar un control remoto GIT como de solo lectura?
- 12. git Groking uso remoto
- 13. git ¿Puedo ver el reflog de un control remoto?
- 14. Configuración de un origen remoto de git
- 15. C# Comprobar servidor remoto
- 16. ¿Puedo usar git para enviar trabajos?
- 17. ¿Hay una manera simple de "describir git" un repositorio remoto?
- 18. ¿Cómo mantener Subversion y un servidor remoto (a través de FTP) sincronizados?
- 19. usando Javascript para cargar un archivo remoto en mi servidor a un servidor de terceros
- 20. ¿Cómo mantener dos repositorios git sincronizados?
- 21. Depósito remoto claro de Git
- 22. ¿Cómo mantengo un svn: external actualizado usando git-svn?
- 23. Mantener Git Reflog indefinidamente?
- 24. El servidor remoto devolvió un error: NotFound
- 25. Usando Git, ¿cómo puedo encontrar cambios entre local y remoto?
- 26. git eliminando una rama de desarrollo del servidor remoto de git
- 27. ¿Cómo se hace un git pull automático en el servidor remoto?
- 28. ¿Debo usar Windows Management Service o Remote Agent Service para publicar en un servidor remoto?
- 29. Cómo agregar control remoto con Git Gui?
- 30. git-ignorando archivos basados en control remoto?
¿Cuál es el beneficio del repositorio desnudo? En la medida en que se desaconseja empujar hacia un árbol de trabajo, no se ha ganado nada más que complejidad agregando este paso intermedio. No he probado esto y no conozco a Git tan bien, así que si elaboras más que sería mucho más útil – SamGoody
@SamGoody: en realidad, preferiría no utilizar el * tercer * repo para la implementación del sitio web en vivo , pero el segundo * necesita * ser simple para asegurarse * de que ninguna modificación local interfiera con usted empujando nuevos commits a él *. Ver http://stackoverflow.com/questions/5490434/git-live-server-best-practices/5491039#5491039. El gancho post-recepción combinado con un archivo git (un alquitrán que se extraerá) es mejor. – VonC
Tal como está, el trabajo se realiza ocasionalmente en el servidor activo, y luego se fusiona hacia atrás con las computadoras de desarrollo. (Concediendo que nuestra configuración sea inusual, es correcta para nuestras necesidades). Necesitamos que el servidor en vivo tenga la capacidad de recibir y enviar cambios. Lo ideal sería que, al presionarlo, los cambios se combinen en [o se debe registrar un error]. El archivo de Git no sería adecuado. Esta solución sería, pero ¿por qué no presionar directamente? – SamGoody