tutorial stackoverflow example git git-rebase

stackoverflow - git rebase--continue no funcionará



git rebase tutorial (4)

Hice git rebase master , solucioné los conflictos informados en un archivo y luego git add el archivo para resolver el conflicto. Luego hice git rebase --continue , y obtuve esto:

Aplicando: Prueba de unidad fija

Sin cambios: ¿se olvidó de usar ''git add''? Si no queda nada por hacer, es probable que algo más haya introducido los mismos cambios; es posible que desee omitir este parche.

Cuando hayas resuelto este problema, ejecuta "git rebase --continuar". Si prefiere omitir este parche, ejecute "git rebase --skip" en su lugar. Para verificar la rama original y detener el rebase, ejecute "git rebase --abort".

¿Alguna idea de lo que me falta aquí? Debería hacer git rebase --skip?


¡Aliento, no te estás volviendo loco! ; - = Este es un error conocido donde OSX (si eso es lo que estás usando) está jugando con git, se detalla aquí (no yo).

La historia corta (es decir, la solución) es:

git config --global core.trustctime false


Bien podría significar que los cambios ya están redefinidos. Solo revisa el estado de git.


Si está en Mac OS X, antes que nada debe desactivar revisiond , ya que puede interferir con los archivos en su árbol de trabajo en el medio de la rebase, lo que provoca un comportamiento impredecible y roto:

git config --global core.trustctime false

El problema se explica en este artículo y @nickfalk gracias a @nickfalk quien lo señaló.

En cuanto a su rebase, este tipo de situación no es inusual en la práctica. Tratemos de pensar a través de los pasos de lo que está sucediendo:

  • Cuando restabas la rama actual en la parte superior de otra rama, git mueve la CABEZA a la otra rama y comienza a aplicar las confirmaciones únicas que tienes en tu rama actual.

  • Mientras reproduces uno de esos commits, llegaste a un conflicto. Lo resolvió, pero como resultado, no hay cambios para confirmar, nada para reproducir en este compromiso.

Prácticamente, esto significa que rechazaste los cambios en la confirmación actual que se está reproduciendo. Entonces, si no necesita nada de esta confirmación, es normal omitirla. Así que git rebase --skip tiene sentido aquí.


Tuve un problema similar en mi proyecto y lo resolví poniendo la opción --preserve-merges en el comando rebase. En mi proyecto, este problema fue causado por un commit de fusión, que es un "commit vacío". Usando git rebase --preserve-merges toma la fusión de commit y continúa la fusión sin romper el árbol de commit.