Можно ли выполнить git-checkout одну строку вместо всего файла?

86

Если я изменил несколько строк версированного файла, можно ли отменить изменения строки с помощью командной строки?

Точно так же, как я бы сделал для всего файла:

git checkout /path/to/file.extension

но делая что-то вроде, скажем

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

Это возможно?

LuisVM
источник

Ответы:

124

Вы можете использовать git checkout -pдля просмотра каждого фрагмента по отдельности и решить, следует ли их проверить или оставить как есть (и это также требует необязательного аргумента пути, если вы хотите сузить его еще больше).

Мэтт Энрайт
источник
Этот метод дает слишком большие части вместо строк ... :(
betontalpfa
46

Чтобы уточнить ответ Мэтта, 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 sи e- хорошее место для начала.

Смотрите также:

Шон Латтин
источник