¿Qué comando (s) de GIT no interactivo logran el cambio de Antes a Después?cómo reordenar compromisos en Git de forma no interactiva
Antes:
A---B---C---D
Después:
A---C'---B'---D'
¿Qué comando (s) de GIT no interactivo logran el cambio de Antes a Después?cómo reordenar compromisos en Git de forma no interactiva
Antes:
A---B---C---D
Después:
A---C'---B'---D'
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.
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 :)
¿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. –
@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. –
Ver How do I run git rebase --interactive in non-interactive manner? para usar git rebase --interactivo de manera no interactiva.
Luego, si tiene criterios formales para reordenar confirmaciones, puede crear una secuencia de comandos, ver por ejemplo Really flatten a git merge para reordenar las confirmaciones antes de la fecha de confirmación original.
git rebase -i sin duda te dejará hacerlo; pero no estaba seguro de cómo conseguiría lo mismo de forma no interactiva –
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. –
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 :) –