Hay una carpeta controlada por git en un servidor donde se extrae la rama principal y se ha modificado y no confirmado un montón de archivos. ¿Hay alguna forma de confirmar los cambios en una rama separada para poder volver a una versión limpia?
es decir, quiero deshacer eficazmente todos los cambios de esta persona, pero almacenarlos en otra oportunidad para que, si esa persona quiere sus cambios, pueda cambiar a esa rama.
(Sí, sé que no es así como git está diseñado para funcionar, ¡pero esa es mi situación!) Cualquier idea muy apreciada.
git
version-control
dvcs
git-branch
corydoras
fuente
fuente
Respuestas:
En primer lugar, moverse a una rama diferente basada en el HEAD actual se realiza así:
Confirme todos los cambios (suponiendo que no haya archivos recién agregados, de lo contrario,
git add
ellos):Regrese a la rama maestra:
Los cambios no confirmados anteriormente estarán todos en la nueva rama y el maestro seguirá en el estado en el que estaba sin esos cambios.
fuente
<newbranch>
.Este método es útil:
Dónde:
<new_branch>
es su nueva rama (por ejemplo,my_branch
)<start point>
es tu rama inicialmaster
en tu caso)-B
crea una nueva rama a partir de<start point>
, si ya existe, luego reiníciela a (no fallará como-b
cuando la rama ya existe)-m
puede ser útil especificar al cambiar de rama, esto realizará una combinación de tres vías entre la rama actual, el contenido de su árbol de trabajo (útil para scripts).Ver:
man git-checkout
para más detalles.fuente
Siempre puedes guardar tus cambios.
También tenga en cuenta que si se compromete con la rama "incorrecta", siempre puede mover esa rama hacia atrás, porque la rama no es más que un puntero a una confirmación.
fuente
git checkout -b bravenewmaster
. Es menos tipeo y no tocará todos los archivos modificados innecesariamente.git
por alguna razón no dejagit checkout -b
cuando hay cambios. De lo contrario, ¿por qué preguntar? ;-)