Git: cambiar una línea en el archivo para la historia completa

Cuando lancé el repositorio de git, completé varios archivos como una confirmación inicial. Ahora, muchas confirmaciones posteriores, noté que incluí una línea con información en estos archivos que no quiero publicar (a diferencia del resto del código). Por lo tanto, quiero eliminar / cambiar esta línea y guardar el resto del código.

Buscar alrededor encontré esta solución: inserte una solución vacía como la solución original (que se describe aquí: ¿ inserte la solución antes de fijar la raíz en Git? ), Vuelva a formatearla y edite la primera solución anterior con una enmienda. Desafortunadamente, muchos conflictos con la fusión dura ocurren durante la rebase (como se describe aquí: git: resolución de conflictos causados ​​por la rebase ).

¿Hay alguna otra manera de resolver mi problema o debo reinstalar y editar todos los conflictos manualmente?

Gracias de antemano :)

Tibo

27
25 авг. set TiBo 25 ago. 2011-08-25 20:52 '11 a las 20:52 2011-08-25 20:52
@ 3 respuestas

Aquí está el comando que eliminará la cadena de violación del historial de archivos en todas sus sucursales:

 git filter-branch --tree-filter 'sed -i "/sensitive information/ d" filename' -- --all 

Esto verifica cada revisión, ejecuta el comando sed y luego devuelve esa revisión.

El comando sed en este caso coincide con las líneas que contienen el patrón de sensitive information en el archivo llamado filename y elimina estas líneas.

Nota: es bueno si tiene una copia de seguridad, y primero intente con el script sed para asegurarse de que hace lo que quiere, porque demora mucho tiempo en un largo historial.

35
26 авг. respuesta dada por Karl Bielefeldt 26 ago. 2011-08-26 01:39 '11 a la 1:39 2011-08-26 01:39

Hice este comando que no da un error cuando el archivo no existe:

border=0
  filename=./path/to/your/filename filter=your_regex_here git filter-branch --tree-filter 'test -f $filename  sed -i.bak "/$filter/d" $filename || echo "skipping file"' -- --all 
4
01 июля '16 в 0:37 2016-07-01 00:37 Ted Yavuzkurt dio la respuesta el 1 de julio de 2016 a las 0:37 2016-07-01 00:37

Puedes ver git filter-branch

Los ejemplos en el enlace deberían ayudarlo: http://git-scm.com/docs/git-filter-branch

1
25 авг. La respuesta se da manojlds 25 ago. 2011-08-25 21:14 '11 a las 21:14 2011-08-25 21:14

Otras preguntas sobre las etiquetas o hacer una pregunta