Acabo de empezar a usar git y estoy impresionado con las diferencias de flujo de trabajo de SVN, pero me he encontrado con una pregunta de configuración/estructural que la documentación no parece explicar intuitivamente cómo configurarla, y estoy preguntándose si es posible.configuración del repositorio Git para el desarrollo de dos máquinas?
Mi configuración es que tengo varias computadoras que desarrollo (de escritorio y portátil), así que, para mantenerme sincronizado y proporcionar una copia de seguridad para el repositorio de git, configuré un repositorio "público" en mi casa Servidor Linux al que puedo acceder desde el escritorio y la computadora portátil. No es realmente público, ya que requiere acceso SSH a la caja para acceder.
Mi problema viene cuando hago cambios en mi escritorio, puedo empujar fácilmente los cambios en el repositorio del servidor (no tengo el conjunto mirror
bandera para el origin
remoto en ese repositorio), y el uso de gitx
puedo ver que el local y los estados remotos se ven idénticos, y cada uno de mis commits individuales se ha registrado en el servidor.
La pregunta es cuando me cambio a mi computadora portátil, que uso con poca frecuencia, el repositorio git es probable que haya varios compromisos detrás de la versión del servidor y deba actualizarse. Empecé a usar git pull
para obtener esos cambios como locales, pero en lugar de duplicar todas las confirmaciones individuales en el servidor en el repositorio local, agrega una nueva confirmación 'fusión' al repositorio local, y gitx
muestra la fusión en la rama de repositorio remoto en ese punto.
¿Existe un comando/flujo de trabajo que me permita actualizar el repositorio local al estado exacto del repositorio remoto (de modo que si hago un git push --mirror
no se perderán los datos)? ¿Tendría que eliminar mi repositorio local cada vez y git clone
de nuevo cada vez?
Actualmente, nadie más necesitaría acceder a este repositorio, aunque en el futuro podría convertirse en un repositorio público para que las personas lo extraigan, por lo que las respuestas que no destruyen esa posibilidad serían apreciadas.
Editar: Mis compromisos incluyen las ramas de rebase de la rama principal; podría ser eso lo que desencadena el comando git pull
para mostrar como una combinación? ¿Es el indicador --rebase
lo que necesito entonces?
Solución Explicación: Resulta que había hecho el siguiente para configurar mis repositorios:
- Uso portátil para inicializar un repositorio git
- empuje portátil repositorio de servidor (cometer Un)
- hecho un cambio y se ha comprometido en la computadora portátil (portátil en cometer B)
- escritorio depósito del servidor de clones (commit Un)
- hacer cambios en el escritorio y la confirmación (C compromete , D, E , incluidas las sucursales cambio de base) empuja
- de escritorio a servidor (servidor de rápido hacia delante a E)
- Cuando portátil tira desde un servidor, da como resultado una fusión (desde B no pueden ayunar adelante a E).
- El equipo portátil se fusiona y empuja los cambios al servidor
- El escritorio ahora también tiene que fusionarse.
Debido a que una comisión adicional que fue un error no intencional, me llevó a pensar que siempre sería una fusión. Por sugerencia de Xentac, volví y encontré en la computadora portátil que había hecho una fusión que no se envió al servidor, que fue el culpable, y una vez que obtuve las tres realmente sincronizadas, git pull --ff
(forzando solo fusiones rápidas)) funciona bien, y me advierte si algo no está sincronizado antes de hacer la fusión.