Quiero revertir un commit particular en git. Desafortunadamente, nuestra organización todavía usa CVS como estándar, por lo que cuando me comprometo con CVS, varios git commits se agrupan en uno. En este caso, me encantaría destacar el git commit original, pero eso es imposible.
¿Existe un enfoque similar al git add --patchque me permitiría editar selectivamente las diferencias para decidir qué partes de un compromiso revertir?

Respuestas:
Use la opción
--no-commit(-n) paragit revert, luego desestabilizar los cambios, luego usegit add --patch:Nota: Los archivos que agrega usando git add --patch son los archivos que desea revertir, no los archivos que desea conservar.
fuente
git reset --harddescartar los otros cambios que no desea revertir.git reset --hardes peligroso para los novatos, ya que podría perder las ediciones deseadas. En lugar de acostumbrarsegit status, esto sugieregit checkout -- FILE..revertir las cosas de manera más segura.git!git revertDebería tomar una--patchdiscusión.git revertse utiliza para revertir confirmaciones completas. Puede usargit checkout -ppara seleccionar interactivamente bits para revertir.commiten primer lugar, ostash, a continuación, tratarrevert.He usado lo siguiente con éxito.
Primero revierta el compromiso completo (lo pone en el índice) pero no lo confirme.
Luego, elimine interactivamente los BUENOS cambios revertidos del índice
Luego comete la diferencia inversa de los cambios incorrectos
Finalmente, los BUENOS cambios revertidos (que no han sido organizados por el comando reset) todavía están en el árbol de trabajo. Necesitan ser limpiados. Si no quedan otros cambios no confirmados en el árbol de trabajo, esto puede hacerse
fuente
reset HEAD .), porque no requiere la limpieza final del directorio de trabajo?reset -pes más corta que lareset HEADseguidaadd -p. Pero aún requiere la limpieza, ya que los "buenos" trozos que se han restablecido todavía están en el directorio de trabajo después de la confirmación.Personalmente, prefiero esta versión, que reutiliza el mensaje de confirmación generado automáticamente y le da al usuario la oportunidad de editar y pegar la palabra "Parcialmente" antes de finalmente confirmar.
fuente
Solución:
fuente
Otra alternativa (si su versión actual de un archivo no está muy lejos de la versión que está intentando revertir) es obtener el hash de la confirmación inmediatamente antes de la que desea revertir parcialmente (desde
git log). Entonces su comando se convierte en:Esto cambia los archivos en su árbol de trabajo pero no crea confirmaciones, por lo que si realmente rellena puede comenzar de nuevo
git reset --hard -- file/you/want/to/fix.ext.fuente
Puede usar git-revert -n, y luego usar add --patch para seleccionar trozos.
fuente