Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 890
LuisVM Avatar asked Aug 05 '11 22:08

LuisVM


People also ask

What is difference between git checkout and clone?

The git checkout command may occasionally be confused with git clone . The difference between the two commands is that clone works to fetch code from a remote repository, alternatively checkout works to switch between versions of code already on the local system.

What does git checkout -- file do?

Git Checkout File Checking out a file is similar to using git reset with a file path, except it updates the working directory instead of the stage. Unlike the commit-level version of this command, this does not move the HEAD reference, which means that you won't switch branches.


2 Answers

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).

like image 65
Matt Enright Avatar answered Oct 10 '22 15:10

Matt Enright


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:

  • https://git-scm.com/docs/git-checkout for --patch
  • https://git-scm.com/docs/git-add for the interactive options.
like image 28
Shaun Luttin Avatar answered Oct 10 '22 15:10

Shaun Luttin