¿Cómo debo editar una revisión de parche al eliminar líneas?

Tengo un file bar.txt en el que bar.txt 3 líneas y todavía no bar.txt nada. Quiero restaurar una de las líneas eliminadas a través de git checkout -p .

Ejemplo / salida Bash:

 $ git checkout -p foo/bar.txt diff --git a/bin/custom/foo/bar.txt b/bin/custom/foo/bar.txt index 35483b7..e945cae 100644 --- a/bin/custom/foo/bar.txt +++ b/bin/custom/foo/bar.txt @@ -1097,9 +1097,6 @@ mond.desc.refinements = Foo mond.desc.removeAttribute = Foo mond.desc.resultsForStore = Foo mond.no.results = Foo -mond.page.CO.class.name = Foo -mond.page.CO.parent.name = Foo -mond.page.brands.parent.name = Foo mond.page.cmscontent.datetime = Foo mond.page.currentPage = Foo mond.page.firstPage = Foo 

He intentado cosas como:

 @@ -1097,9 +1097,8 @@ mond.desc.refinements = Foo mond.desc.removeAttribute = Foo mond.desc.resultsForStore = Foo mond.no.results = Foo -mond.page.CO.class.name = Foo mond.page.CO.parent.name = Foo mond.page.brands.parent.name = Foo mond.page.cmscontent.datetime = Foo mond.page.currentPage = Foo mond.page.firstPage = Foo 

Pero no funciona.

Probablemente iré sobre esto en la otra dirección. Se trata de torcer less la mente para git add -p los cambios que desee , confirmarlos, y luego git checkout . para limpiar las otras cosas. Si aún no quiere comprometerse, solo git reset HEAD^ para deshacer el compromiso que acabamos de hacer, dejando los cambios guardados en su espacio de trabajo.

Pero eso no es lo que preguntaste, y no tan divertido, así que …


Esto es confuso en la forma en que los negativos dobles no son confusos, pero puedes manejarlo si doblas tu cerebro correctamente.

Digamos que tenemos los numbers file numbers contienen:

 one two three four 

Eliminamos two y three , por lo que git diff ve así:

 diff --git a/numbers b/numbers index f384549..a9c7698 100644 --- a/numbers +++ b/numbers @@ -1,4 +1,2 @@ one -two -three four 

Ahora ejecutamos git checkout -p numbers . Observe que el post le pregunta si desea descartar el trozo que resta two y three . Si dices y , descarta la resta, dejándote un file completo que incluye los cuatro numbers.

  one -two -three four Discard this hunk from worktree [y,n,q,a,d,/,e,?]? 

Ahora editaremos el trozo para crear el trozo que queremos descartar . Eso significa que si realmente queremos eliminar solo two , queremos descartar el cambio que eliminó three . Contrariamente a la intuición, eso significa que editas el trozo borrando -two .

 @@ -1,4 +1,2 @@ one -three four 

Esto descarta la eliminación de three , y no descarta la eliminación de two , dejándonos con la diferencia:

 diff --git a/numbers b/numbers index f384549..ceb5927 100644 --- a/numbers +++ b/numbers @@ -1,4 +1,3 @@ one -two three four 

Para resumir, elimine las líneas del trozo que aún desea eliminar . Deje las líneas de resta que desea descartar. El trozo editado contendrá restas (que se descartarán) para las líneas que guarde y no contendrá las líneas que aún desea eliminar.