2010-05-25 16 views
10

Mi lugar de trabajo usa Subversion para el control de fuente así que he estado jugando con git-svn por las ventajas de mis propias ramas, me comprometo cuantas veces quiera sin tocar el repositorio principal, etc.Git force complete sync to master

Como mi git svn checkout es local, lo he clonado en un recurso compartido de red para que funcione como una copia de seguridad. Mi idea es que si mi computadora de escritorio sufre un vuelco, al menos tendré el repositorio en el recurso compartido de red para obtener cambios que aún no he tenido la oportunidad de comprometer.

Mi flujo de trabajo es trabajar desde el escritorio, realizar cambios, confirmar, etc. Al final del día quiero actualizar el repositorio en el recurso compartido de red con todos mis cambios actuales. Había configurado el repositorio en el recurso compartido de red usando git clone repo_on_my_desktop y luego actualizando el repositorio en el recurso compartido de red con git pull origin master. El problema con el que me estoy encontrando es cuando uso un git rebase para aplastar varios commits antes de comprometerme con el repositorio principal de svn. Cuando hago esto, obtengo conflictos de combinación en el repositorio de la red compartida cuando intento hacer una copia de seguridad por la noche.

¿Hay alguna manera de simplemente sincronizar completamente con el repositorio en mi escritorio sin hacer un nuevo git clone cada noche?

Respuesta

8

Dos observaciones:

1/recomiendo tener ya sea bare repo o una bundle (un archivo, más fácil de mover) para su participación en la red

2/I prefieren añadir network_repo como un mando a distancia para su repositorio de escritorio y presione desde allí (git push --force network_repo master): permanece en su repositorio de trabajo.

25

No debe hacer una rebase si tiene la intención de sacar de otro repositorio.

Si no le importa sobreescribiendo los cambios en su recurso compartido de red, puede hacer esto:

git fetch origin master 
git reset --hard origin/master 

Esto restablecerá el maestro local al maestro origen.

Advertencia: Este es un restablecimiento completo , perderá todos los cambios (* cometidos o no).

Pero supongo que realmente no hay ningún cambio allí, y es principalmente solo una copia de seguridad.

* Nota: técnicamente hablando, los cambios comprometidos no se pierden hasta que expiran del reflog, pero para todos los efectos, se pierden efectivamente.

+0

No, no elimina los archivos extraños. – felixh

Cuestiones relacionadas