¿Es posible git-checkout en una sola línea en lugar de todo el archivo?

86

Si he modificado varias líneas de un archivo versionado, ¿es posible deshacer los cambios de una línea por línea de comandos?

Al igual que lo haría con un archivo completo con:

git checkout /path/to/file.extension

pero haciendo algo como decir

git checkout /path/to/file.extension --line 10

¿es posible?

LuisVM
fuente

Respuestas:

124

Puede usar git checkout -ppara ver cada trozo individualmente y decidir si verlos o dejarlos como están (y eso también requiere un argumento de ruta opcional si desea reducirlo más).

Matt Enright
fuente
Este método da partes demasiado grandes, en lugar de líneas ... :(
betontalpfa
46

Para desarrollar la respuesta de Matt, git checkout --patch -- <path argument>inicia un modo interactivo con las siguientes opciones:

y - stage this hunk
n - do not stage this hunk

q - quit; do not stage this hunk or any of the remaining ones
a - stage this hunk and all later hunks in the file
d - do not stage this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk

s - split the current hunk into smaller hunks
e - manually edit the current hunk

? - print help

Las opciones y n sy eson un buen punto de partida.

Ver también:

Shaun Luttin
fuente