Como dice otro, puede usar stash
o checkout --merge
. Sin embargo, esa opción causará un cambio en la marca de tiempo de algún archivo. Si está trabajando en un proyecto grande donde la compilación puede llevar mucho tiempo (nuestro proyecto actual tarda media hora en compilarse con compilaciones distribuidas), esto puede no ser óptimo.
En esta situación, puede usar otro repositorio para mover la confirmación a la rama correcta. En primer lugar, tendrá que clonar el repositorio actual (esta necesidad de hacer sólo una vez):
$ git clone /path/to/repository repository.clone
$ cd repository.clone
$ git remote add origin repository.clone
$ git fetch origin
Luego, en su repositorio actual, envíe sus cambios:
$ cd /path/to/repository
$ git add path/to/modified/files
$ git commit -m 'Commit message'
Por otro repositorio , de hacer salir el nuevo commit, y moverlo a la rama correcta:
$ cd ../repository.clone
$ git fetch origin
$ git checkout correct-branch
$ git reset --hard origin/correct-branch
$ git cherry-pick origin/current-branch
$ # resolve conflicts if any, commit with -c option in this case
$ git push origin correct-branch:correct-branch
a continuación, en el repositorio original, se quita cometer el temporal, y quita la modificación asociada (excepto si se quiere k eep ellos en ambas ramas).
$ cd /path/to/repository
$ git reset HEAD^
$ # edit file and remove modifications moved to other branch
Esto es más compleja e implican la reescritura de la historia, pero cuando su proyecto es muy grande, y el tiempo de compilación es un factor limitante, puede ser grande saber la técnica. Tenga en cuenta que puede reutilizar el repositorio clonado, por lo que no hay necesidad de eliminarlo/recrearlo cada vez (si el tiempo de compilación es largo, entonces el repositorio es probablemente grande, y la clonación puede llevar algo de tiempo).
Sweet. Solo tienes que asegurarte de que tus cambios estén organizados. Funciona perfectamente. – helios
muy resbaladizo, definitivamente algo esconde hace que sea muy fácil de hacer – Martin