Cómo cambiar el file de nuevo a principio – git

Me he comprometido por un time y me di count de que hay un file que quiero cambiar en todos los commits a initial. ¿Cuál es la forma más fácil de sobrescribir un file con otro a través de todas las confirmaciones pasadas?

Para confirmar, lo que desea es que todos los files en los repositorys permanezcan intactos, excepto uno que se modificará en todas las confirmaciones:

Aquí hay una manera simple y clara: cree un file que tenga el contenido exactamente como lo desee. Ponlo en un directory fuera del repository.

Ejecute el siguiente command: git filter-branch –tree-filter 'cp' HEAD

Tenga en count que esto cambiará el hash de confirmación de todas las confirmaciones (porque el contenido del file cambia). Es posible que desee crear una sucursal por separado usando git checkout -b <new branch> antes de comenzar

Si desea verificar la versión original de un file, simplemente escriba esto:

 git checkout HEAD filename 

Si conoce el hash de la versión específica que desea, también puede hacerlo:

 git checkout 653e0c0 filename 

Una combinación de git-log y git-checkout debería hacer el truco. Prueba esto:

 $ git checkout `git log --pretty="format:%h" your_file | tail -1` -- your_file 

Ahora para diseccionar lo que eso significa:

  1. git log --pretty="format:%h" your_file devolverá todo el historial de loggings de your_file . Usamos el --pretty="format:%h" para limitar el resultado a solo los commits sha. Si ejecutó este command solo, verá que devuelve una list de confirmaciones que componen el historial de su file. (Eliminar --pretty="format:%h" para ver los loggings completos)

  2. Entonces tenemos que hacer la tubería tonta | tail -1 | tail -1 para recoger el último commit en la list del command git-log anterior. Esta última confirmación corresponderá al primer commit del cual es parte tu file. Tenemos que hacer las tuberías porque git log --reverse -1 realiza git log --reverse -1 el filtrado de las confirmaciones (es decir, la bandera -1 ), antes de reorderar el resultado (es decir, el indicador --reverse ). Por lo tanto, el resultado de git log --reverse -1 es que se git log --reverse -1 la confirmación más reciente asociada con su file, en lugar de la confirmación inicial más temprana.

  3. A continuación, rebobinar su file a este primer commit utilizando el command git checkout <first_ever_commit_sha> your_file .