ChatGPT解决这个技术问题 Extra ChatGPT

是否可以 git-checkout 单行而不是整个文件?

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

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

git checkout /path/to/file.extension

但做类似的事情,说

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

这可能吗?


M
Matt Enright

您可以使用 git checkout -p 单独查看每个块并决定是检查它们还是保持原样(如果您想进一步缩小范围,这也需要一个可选的路径参数)。


这种方法给出了太大的部分,而不是线条...... :(
S
Shaun Luttin

为了详细说明 Matt 的答案,git checkout --patch -- <path argument> 使用以下选项启动交互模式:

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

y n se 选项是一个很好的起点。

也可以看看:

https://git-scm.com/docs/git-checkout for --patch

https://git-scm.com/docs/git-add 用于交互选项。