Is it possible to git-checkout a single line instead of the entire file?

GitGit Checkout

Git Problem Overview


If I have modified several lines of a versioned file, is it possible to undo the changes of a line by command-line?

Just like I would do for an entire file with:

git checkout /path/to/file.extension

but doing something like, say

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

is this possible?

Git Solutions


Solution 1 - Git

You can use git checkout -p to see each hunk individually and decide whether to check them out or leave them as is (and that takes an optional path argument as well if you'd like to narrow it down further).

Solution 2 - Git

To elaborate on Matt's answer, git checkout --patch -- <path argument> starts an interactive mode with the following options:

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

The y n s and e options are a good place to start.

See also:

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLuisVMView Question on Stackoverflow
Solution 1 - GitMatt EnrightView Answer on Stackoverflow
Solution 2 - GitShaun LuttinView Answer on Stackoverflow