是否有可能 git-checkout 一行而不是整个文件?

如果我修改了一个版本化文件的几行,是否可以通过命令行撤消对 一句台词的更改?

就像我对整个文件做的那样:

git checkout /path/to/file.extension

但是做一些事情,比如说

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

这可能吗?

19227 次浏览

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

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: