2012-03-02 22 views
69

Acabo de hacer un git pull --rebase origin master y hubo un conflicto.¿Qué hace exactamente git rebase --skip do?

En primer lugar, este conflicto estaba en un archivo que no había tocado, y estaba a punto de 10 confirmaciones. ¿Por qué pasó esto?

Escribí accidentalmente git rebase --skip, y se saltó ese parche.

Preocupado por haber omitido una confirmación, comprobé una nueva versión de la rama principal e hice una diferencia entre la rama en la que hice la rebase y la nueva rama principal. Los únicos cambios que se muestran en el diff son los últimos commit, y al mirar el log, el parche que fue 'omitido' aparece en el historial de commits.

¿Alguien puede explicar lo que está pasando aquí?

+7

¿Cómo se escribe accidentalmente 'git rebase --skip'. ¿Erróneamente tal vez? :) – manojlds

+1

¡Ja! Quería escribir --aborto, pero por alguna razón desconocida salió como --skip. Realmente no estaba pensando. :) – mrwooster

+5

el historial de shell es bueno en esto (para hacerte ejecutar algo que no querías). – Florian

Respuesta

39

Hace lo que dice, es se salta a commit. Si ejecuta rebase --abort en un conflicto posterior durante la misma rebase, la confirmación omitida se revertirá también, por supuesto.

Si su cambio ya existía en sentido ascendente, Git no podrá aplicar su confirmación (pero generalmente debe omitirlo automáticamente, si el parche es exactamente el mismo). Se omitirá su propia confirmación, pero el cambio seguirá existiendo en HEAD actual, porque ya se aplicó en sentido ascendente.

realmente debería asegurarse de que no ha eliminado un importante cambio de la suya;) (utilizar el reflog para volver al estado anterior a la de rebase)

+4

Entonces, ¿por qué la confirmación sigue apareciendo en el registro? ¿Y por qué aparece ahora el commit faltante en el diff? – mrwooster

+0

¿Cuál fue el conflicto? Tal vez su parche ya fue aplicado aguas arriba. Sin embargo, Git se quejaría de una comisión vacía. – knittl

+3

Sí, el conflicto ya había sido resuelto aguas arriba ... por alguna razón, git rebase saca a relucir viejos conflictos de fusión ... ¿otra cosa que me confunde? ... esto significa que se saltó el conflicto, pero aplicó el parche que resolvió ¿el conflicto? – mrwooster

Cuestiones relacionadas