¿Cómo recuperar el file en git y mantener su historial de culpa original?

Accidentalmente eliminé un file (yo no era su creador) y me comprometí y lo empujé al control remoto. Ahora quiero hacer que Git recupere este cambio, pero cuando uso git revert #mistaken commit funciona, PERO me culpo de información como creador de este file, no para su creador original. ¿Alguien sabe cómo recuperar este file en git y mantener su historial de culpa original? Gracias de antemano por cualquier ayuda. Adán

La única forma de hacer lo que desea es volver a escribir el historial de revisiones. Sin embargo, esto tiene el desagradable efecto secundario que todos los que hicieron commits desde que se eliminó el file ahora tendrán que volver a establecer la base de su código. Como se puede imaginar, esto causará mucho trabajo para todos en el equipo.

Por el bien de la cordura de todos, lo mejor es revertir el compromiso único y dejar la "culpa" como propia. Un poco de arqueología histórica mostrará a todos los interesados ​​lo que sucedió.

Claro … revierte pero el file es "nuevo" (no existía en la revisión anterior … ¿quién tiene la culpa de las nuevas líneas? Por supuesto que es usted). Si desea mantener el file como estaba (con la culpa y todo) ¿por qué no acaba de modificar la revisión donde la eliminó? Digamos que tienes algo como esto:

REV1 – REV2 – REV3 – REV4 – REV5 – REV6 – REV7 – REV8

Digamos que estaba en REV3 donde lo borraste y en REV6 revirtiste REV3. Pruebe esto en su lugar:

git checkout REV3 git checkout HEAD~1 -- <path-to-file> # get file back from its ashes git commit --amend --no-edit # created a new REV3 revision that has the file git cherry-pick REV3..REV5 git cherry-pick REV6..REV8 

cuando enmiende REV3 obtendrá una identificación diferente para la revisión del REV3 original. Cuando seleccionas el siguiente command, asegúrate de usar la ID REV3 original, no la nueva. REV6 no se aplicará (porque ya no lo necesita). Cuando haya terminado, tiene una sucursal alternativa donde el file nunca se fue y ahora la culpa debería mostrarle las revisiones originales de las líneas. Siéntete libre de presionar la nueva twig si te gusta más.