Git: показать больше контекста при использовании git add -i или git add -e?

101

Я выборочно фиксирую части большого файла, и я хотел бы видеть больше контекста вокруг каждого фрагмента. Это возможно?

Шон Дж. Гофф
источник

Ответы:

130

Короткий ответ: нет.

git diffесть -U<n>опция, которая позволяет вам настроить количество линий, отображаемых вокруг изменения. Например, git diff -U5 ...покажет 5 строк контекста. Насколько я могу судить, такой опции для отображения различий в интерактивном режиме нет.

хаммар
источник
7
Есть ли -U<infinity>возможность показать весь файл? (Или большое число «достаточно хорошо»?)
titaniumdecoy
2
Хочу отметить, что число in git diff -U<n>используется с обеих сторон каждой измененной строки. Итак, если вы изменили одну строку, git diff -U5вы увидите 11 строк (при условии, что одна строка не находится в начале конца файла.)
ArtOfWarfare
5
Это git diffне для git add --patchилиgit add --interactive
0xcaff 08
1
@titaniumdecoy, я разместил это как отдельный вопрос stackoverflow.com/questions/28727424/…
Александр Левчук
3
Все еще нет решения?
Виталий Зданевич
2

Подтверждаю, что в 2019 году это все еще невозможно.

Внешний инструмент, например, jjlee/git-meld-indexможет помочь:

git-meld-indexработает meld- или любой другой мерзавец difftool ( kdiff3, diffuseи т.д.) - чтобы в интерактивном режиме изменения сцены к индексу мерзавца (также известный как плацдарма мерзавца).

Это похоже на функциональность git add -p, и git add --interactive.

В некоторых случаях объединение проще / быстрее в использовании, чем git add -pв таких инструментах, как git gui.
Это потому, что meld позволяет, например,:

  • увидеть больше контекста ,
  • см. внутристрочные различия
  • редактировать вручную и видеть «живые» обновления различий (обновляются после каждого нажатия клавиши)
  • переходить к изменению, не говоря " n" для каждого изменения, которое вы хотите пропустить
VonC
источник