web-dev-qa-db-fra.com

Est-il possible de git-checkout une seule ligne au lieu du fichier entier?

Si j'ai modifié plusieurs lignes d'un fichier versionné, est-il possible d'annuler les modifications de ne ligne par ligne de commande?

Tout comme je le ferais pour un fichier entier avec:

git checkout /path/to/file.extension

mais faire quelque chose comme, disons

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

est-ce possible?

80
LuisVM

Vous pouvez utiliser git checkout -p pour voir chaque morceau individuellement et décider de les retirer ou de les laisser tels quels (et cela prend également un argument de chemin facultatif si vous souhaitez le réduire davantage).

111
Matt Enright

Pour développer la réponse de Matt, git checkout --patch -- <path argument> démarre un mode interactif avec les options suivantes:

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

Les options yns et e sont un bon point de départ.

Voir également:

41
Shaun Luttin