ver tag oneline modificados log crear archivos git

oneline - git push tag



modificando un solo archivo en una confirmaciĆ³n pasada en git (2)

Si solo quiere modificar el segundo al último commit (por ejemplo, no hace mucho tiempo, especialmente no antes de muchas ramas y fusiones), entonces uso este procedimiento:

  1. git checkout -b tmp bad-commit
  2. arreglar los archivos
  3. git commit --amend
  4. git rebase tmp master

Si tiene fusiones intermedias, puede intentar rebase -i -p , pero los resultados pueden variar.

Quiero arreglar un archivo en la confirmación pasada. Esto podría afectar todas las confirmaciones ascendentes.

¿Hay una manera fácil de hacer eso? ¿Me puede dar una guía de cómo hacer eso?

Muchas veces cuando me comprometo dos veces, encuentro que he tenido un error en la primera confirmación, y deseo corregir el error sin tener que ''reiniciar'' mi última confirmación.

Para aclarar Quiero cambiar la confirmación real, es decir, quiero que se modifique el contenido de la confirmación pasada. IOW ¡Quiero cambiar la historia!


Parece que:

Puede encontrar un ejemplo de rebase interactivo en este comentario : podría evitar la rama temporal, pero de nuevo, es más complejo.

También rebase a menudo para limpiar el historial de desarrollo para que los cambios sean correctos y se agrupen adecuadamente.

Un ejemplo inventado:
Renuevo la función foo a la bar y la confirmo con un comentario que dice "renombrado foo a la barra".
Luego pasé a la siguiente función o solución, y lo comprometí, y pasé al siguiente.
¡A la mitad de eso, descubrí que me perdí un ejemplo de foo !
Confirmo mi trabajo en progreso (o uso git-stash), arreglo el ''foo'' que falta y lo git-rebase --interactive , luego uso git-rebase --interactive para combinar todas las correcciones foo juntas en una confirmación limpia.
Si no git-commit --amend git-stash , entonces git-commit --amend (otra forma de rebase) cuando finalmente termine la función que estaba en progreso.

Cuando mis parches se presionan para su revisión, todas las piezas son correctas y cuentan una historia coherente. Algunas veces uso git-rebase --interactive solo para hacer cambios adyacentes separados temporalmente que afectan los mismos bits, de modo que los cambios estén en contexto.