2009-09-09 19 views
98

Empecé a trabajar en lo que pensé que sería una pequeña corrección de errores en mi rama principal. Sin embargo, se ha descontrolado hasta el punto en que desearía haber creado una rama separada para hacer el desarrollo en primer lugar.Tome todos mis cambios en la rama actual y muévalos a una nueva sucursal en Git

Así que ahora lo que me gustaría hacer es:

  1. Crear una nueva rama llamada (por ejemplo) "borde"
  2. mover todos los archivos modificados/sin seguimiento de maestro a borde (de tal manera que maestro no ha cambiado desde cuando empecé la corrección de errores)
  3. terminar mi trabajo en el borde, se funden de nuevo en maestro

¿Cómo puedo hacer esto?

Respuesta

93

Si no has estado cometiendo nada aún, ya estás en la posición correcta.

  1. Crear una nueva rama: git checkout -b edge
  2. Sus archivos no han cambiado. Solo git add lo que necesita y comprométase como de costumbre.
  3. Cuando haya terminado de comprometerse en edge, vuelva a master con git checkout y git merge edge.
+0

no había cometido nada todavía, de manera que la primera línea era una vista agradable ... uf, que en realidad era bastante indoloro :-) – Ryan

86

Para añadir a la respuesta de JB, si usted tiene ya comenzó a hacer algunas confirmaciones de maestro para lo que terminó por ser un esfuerzo de "borde", usted podría:

git stash 
git checkout -b edge master 
git branch -f master SHA1_before_your_commits 
git stash apply 
+0

la envoltura escondite no es estrictamente necesario, pero solo para cambios de trabajo sin compromiso ¿no? – HaveAGuess

+4

@HaveAGuess correcto. Por "tomar todos mis cambios", también incluí cambios actuales aún no agregados. De ahí el alijo. – VonC

+1

gracias (votado) – HaveAGuess

13

Si están tratando de mover el trabajo de maestro a una rama que ya existe, pero está detrás de maestro, git no le permitirá cambiar a la otra rama. En este caso, haga lo siguiente:

git stash 
git checkout oldBranch 
git merge master 
git checkout master 
git stash apply 
git checkout oldBranch 
Cuestiones relacionadas