2010-01-08 10 views
17

Soy nuevo en Git y estoy un poco confundido. Tengo una rama principal y he creado una segunda rama de características.GIT: ¿Tengo que comprometer mi sucursal antes de consultar otra sucursal, qué hay de escondite?

Si realizo cambios en mi rama de características y luego cambio a Máster, ¿perderé mis cambios si no me comprometo?

¿Dónde entra en juego el alijo, es algo que se hace antes de cambiar de rama (pero no se quiere comprometer) o es simplemente revertir algunos cambios para poder volver temporalmente al código anterior?

Respuesta

12

No puede cambiar a otra rama a menos que limpie su árbol. Esto se hace al confirmar sus cambios, revertirlos o guardarlos en el alijo.

+4

'git checkout' 'continuará' tanto los cambios escalonados como los no escalonados al cambiar ramas siempre que los cambios estén limitados a archivos que son idénticos en la rama actual y la nueva rama (es decir, no hay posibilidad de conflictos si los cambios debían aplicarse a cualquiera de las ramas). Además, se puede forzar un intento de fusión mediante el uso de 'git checkout --merge', pero esto puede dar como resultado conflictos de fusión y esos conflictos pueden ser difíciles de resolver (lo que puede dificultar el regreso al estado previo a la salida). –

+0

Guau, no sé quién era, pero gracias por el -2 downvote ... Me di cuenta de esto hace un tiempo también, pero al momento de escribir recuerdo que no fue posible. ¿Es nuevo para Git 1.7? – Htbaa

2

Probablemente no desee utilizar el escondite para este propósito.

Si realmente desea desarrollar en el maestro y una rama de características al mismo tiempo, le sugiero clonar su repositorio, trabajando en el clon y el maestro, y luego usando empujar y tirar para mover los cambios entre ellos.

Si cambia con frecuencia entre ellas, le sugiero que se registre antes de cambiar; no hay nada de malo en registrar la basura; git hace que sea más fácil resolver esto más adelante.

+0

aquí está mi situación. Tengo una solución con algunos sitios web. Me gustaría trabajar en diferentes versiones del proyecto al mismo tiempo, no quiero tener que usar diferentes directorios de trabajo para cada uno. Así que estoy buscando una forma de cambiar entre varias versiones del proyecto pero git manage cambiando todos los archivos a mi alrededor para poder usar una configuración IIS apuntada a cada sitio web, no tener que cambiar todas mis configuraciones que apuntan a rutas específicas, etc. – BoomTownTech

+1

Tenga en cuenta que 'stash' funciona al registrarse tal como sugiere. Es un compromiso válido en el repositorio como cualquier otro. Ocurre que * no * se hace referencia desde una referencia de bifurcación, pero está anclado por la referencia 'oculto'. Vea la sección * DISCUSSION * aquí: http://www.kernel.org/pub/software/scm/git/docs/git-stash.html – seh

+3

ah, pero es fácil perder la pista del hecho de que ha escondido, si tu atención ha pasado a otras cosas. En mi opinión, es más seguro comprometerse con el jefe de su sucursal. –

Cuestiones relacionadas