Tengo algunos compromisos de git no apurados en mi hijo de nuestra rama principal. Hice una rebase a una rama de características, y fusioné con éxito los pocos conflictos que resultaron, pero no me di cuenta de que la rebase no me dejaría en la rama de características. Si ahora compruebo la rama de características, presumiblemente sobreescribiré mis cambios comprometidos en mi árbol de trabajo, dejándolos en una especie de limbo. Podría "git checkout -m", pero aparentemente solo es para fusionar cambios locales no confirmados. ¿Cómo puedo acceder a la rama de características y mantener mis cambios no enviados pero comprometidos que tengo actualmente bajo la rama principal (sin empujarlos a la rama principal)? ¿Debería haber usado git rebase -onto? Si es así, ¿qué debería hacer ahora que he actualizado el sistema sin -onto?cómo mover cambios comprometidos pero no apilados a otra rama?
Respuesta
Puede hacerlo de esta manera:
git checkout branch
a la comprobación de la rama de la característica.git reset --hard master
para mover la rama para que sea la misma confirmación comomaster
en este momento. Al hacer esto, pierdes todas las confirmaciones que están en la rama. Debido a su rebase, todas esas confirmaciones deben tener copias enmaster
, por lo que en realidad no debería perder nada.git checkout master
para finalizar la compramaster
.git reset --hard origin/master
para restablecermaster
al estado que está en el repositorioorigin
. Esto supone que no tuvo ningún cambio no previsto enmaster
. Si lo hace, reemplaceorigin/master
con la identificación de confirmación que desea restablecer.
"pierde todas las confirmaciones que están en la sucursal ..." No sigo esta parte. Mi objetivo es mantener mis compromisos no movidos moviéndolos a la rama de características. "esto supone que no tuvo ningún cambio no utilizado en el maestro". Nuevamente, los commits sin apresurar son la razón por la cual hago mi pregunta. – BrianHoltz
Veo que lo que quiero hacer se describe en la página del manual de git-reset en "Deshacer una confirmación, convirtiéndola en una rama temática". – BrianHoltz
La página de git man mencionada por BrianHoltz está aquí: http://git-scm.com/docs/git-reset/2.0.0#_examples –
Primero para replantear su situación para asegurarse de que entendí correctamente. Hizo algunas confirmaciones en master
y quería moverlas al feature
, por lo que ejecutó git rebase feature
? Primero, quieres deshacer eso. Suponiendo que aún tiene master
prestado, y no ha hecho ninguna rebases desde entonces, ejecute git reset --hard ORIG_HEAD
para deshacer la rebase.
Ahora, por la forma correcta de mover sus confirmaciones a la sucursal feature
. Hacer, y obtenga una rama temporal para que no se juega hasta master
:
git checkout -b temp
Ahora reajustar todos los cambios realizados desde la última confirmación de origin/master
en feature
:
git rebase --onto feature origin/master
que se mueve la rama temp
como si fue ramificado desde feature
. Ahora para combinar los cambios en feature
, hacer:
git checkout feature
git merge temp
git branch -d temp
Será una combinación de avance rápido ya que sólo se restablecen.
- 1. Fusionando cambios no comprometidos en alguna otra rama usando SVN
- 2. Mover cambios de una rama a otra sin fusionar
- 3. ¿Cómo puedo dejar de lado un montón de cambios no comprometidos mientras trabajo en otra cosa?
- 4. ¿Cómo mover todas las confirmaciones de una rama a otra?
- 5. SVN: mover los cambios pendientes a una nueva rama
- 6. git - mover la rama "tag" a otra confirmación?
- 7. Git: obtener cambios de otra rama
- 8. Al usar git, ¿cómo mueves algunos cambios no confirmados de una rama a otra rama en una carpeta diferente?
- 9. Git: mover confirmaciones de maestro a otra rama
- 10. ¿Cómo mover confirmaciones a otra sucursal?
- 11. Cómo mover un conjunto de cambios a una nueva rama en mercurial
- 12. mover los archivos cambiados a otra sucursal para registrar
- 13. Mover una rama a una nueva etiqueta
- 14. TFS: enviar cambios realizados localmente en una rama a otra rama
- 15. Copiar pero no mover
- 16. Git: Cómo mover los cambios desde la última confirmación a una nueva rama
- 17. Cómo combinar la rama Gerrit con otra rama Gerrit
- 18. ¿Cómo fusionar una rama a otra rama en GIT?
- 19. Mover cambios locales en una sucursal
- 20. Fusionar solo un conjunto de cambios desde otra rama
- 21. Moviendo confirmaciones de una rama a otra
- 22. ¿Cómo "tirar" de una rama local a otra?
- 23. Git: extracción de otra rama
- 24. Perforce, ¿cómo integrar un cambio a otra rama?
- 25. ¿Cuál es el equivalente de Mercurial para mostrar confirmaciones en una rama pero no en otra?
- 26. teniendo cambios no confirmados en la rama incorrecta a la rama derecha
- 27. git checkout otra rama
- 28. git: mover la cabeza rama
- 29. git: cómo mover algunas compromete a nueva rama
- 30. ¿Hacer otra rama predeterminada?
No es una tontería. Es un problema muy diferente con los cambios que ya están comprometidos, sin mencionar que han pasado por una base de datos incorrecta. –