2011-02-12 17 views

Respuesta

22

Prueba esto:

git reset --hard A 
git cherry-pick C 
git cherry-pick B 
git cherry-pick D 

Puede haber un camino con git rebase, pero realmente no lo entiendo.

+1

git rebase -i sin duda te dejará hacerlo; pero no estaba seguro de cómo conseguiría lo mismo de forma no interactiva –

+2

Todo lo que 'git rebase' hace es usar' git format-patch' y luego 'git am' para volver a aplicarlos (posiblemente en un orden diferente). Sin embargo, es un proceso fundamentalmente interactivo, ya que volver a aplicar los parches fuera de servicio puede fallar y requerir la intervención del usuario. –

+1

Creo que esto realmente responde a la pregunta sin rebase -i, excepto que ordenó las selecciones cerebrales B, C, D en lugar de C, B, D, por lo que en realidad no resuelve el problema :) –

38

En su caso, podrá rebasar interactivo: git rebase -i HEAD~4 a continuación, puedes reordenar sus selecciones

Por ejemplo vamos a añadir tres archivos más a nuestra sucursal:

git add A 
git commit -m "A" 

git add B 
git commit -m "B" 

git add C 
git commit -m "C" 

Su shortlog habrá:

$ git shortlog 
(3): 
     A 
     B 
     C 

Si desea cambiar el orden de B con C:

$ git rebase -i HEAD~2 
pick 1f9133d B 
pick 33f41be C 

Sólo Reordenar ser:

pick 33f41be C 
pick 1f9133d B 

Después de terminar de escribir, ver el shortlog:

$ git shortlog 
(3): 
     A 
     C 
     B 

Usted puede hacer lo mismo con todas las confirmaciones de re -ordenando Es como lo que ves es lo que obtienes, lo cual es genial :)

+16

¿Cómo es que esta respuesta levanta los votos cuando claramente no responde la pregunta? OP pregunta por una forma de hacerlo NO INTERACTIVAMENTE y esta respuesta es todo acerca de cómo hacerlo INTERACTIVAMENTE. –

+7

@AndreasWederbrand probablemente porque eso es lo que la mayoría de la gente (incluyéndome a mí) estaba buscando, cuando llegaron aquí, aunque tienes toda la razón. –

Cuestiones relacionadas