Acabo de hacer una git pull --rebase origin master
y hubo un conflicto.
En primer lugar, este conflicto estaba en un archivo que no había tocado y tenía aproximadamente 10 confirmaciones. ¿Por qué pasó esto?
Luego accidentalmente escribí git rebase --skip
y 'se saltó ese parche'.
Preocupado por haberme saltado una confirmación, verifiqué una nueva versión de la rama maestra e hice una diferencia entre la rama en la que hice la rebase y la nueva rama maestra. Los únicos cambios que se muestran en el diff son la última confirmación, y al mirar el registro, el parche que se 'omitió' aparece en el historial de confirmaciones.
¿Alguien puede explicar qué está pasando aquí?
git rebase --skip
? ¿Quizás incorrectamente? :)Respuestas:
Hace lo que dice, se salta una confirmación. Si tu corres
rebase --abort
en un conflicto posterior durante el mismo cambio de base, la confirmación omitida también se revertirá, por supuesto.Si su cambio ya existía en sentido ascendente, Git no podrá aplicar su compromiso (pero generalmente debería omitirlo automáticamente, si el parche es exactamente el mismo). Se omitirá su propia confirmación, pero el cambio seguirá existiendo en el HEAD actual, porque ya se aplicó en sentido ascendente.
Realmente debería asegurarse de no eliminar un cambio importante suyo;) (use el reflog para volver al estado anterior al rebase)
fuente
--skip
sea el camino a seguir. Skip omitirá una confirmación por completo, eliminando todos los cambios realizados en esta confirmación.git rebase
en copiar confirmaciones de una rama a otra rama. Entonces, cuando omite una confirmación, el contenido original de la confirmación se omite y el parche no se aplica (por lo que todos los cambios realizados en cualquier archivo no se incluirán en su rama de destino). La forma más sencilla es configurar un repositorio de git simple con dos ramas, varias confirmaciones en cada una de ellas y luego intentar rebasar y omitir una confirmación (puede usargit rebase --interactive
para especificar qué confirmaciones se copiarán (pick
) o se omitirán (skip
)