Лучше git добавить -p?

Иногда я работаю в системе без установки X Window и не могу использовать Git GUI.

Каковы существующие альтернативы консоли для git add -p?

Мне нравится почти все, что он делает (больше, чем Git GUI на самом деле), но я ненавижу, что он не позволяет мне просматривать всю картину и выбирать порядок, который я хочу просмотреть куски. Это единственное фактическое преимущество Git GUI над git add -p для меня, но это довольно важно.

Я попробовал tig, но мне не нравится пользовательский интерфейс, который он предлагает.

Любые предложения?

Ответ 1

У Vim есть плагин 'fugitive'

Изменить: связанный vimcast (комментарии) отличный, и я рекомендую его. Я хотел бы добавить намек на то, что обычно не нужно набирать :diffget и :diffput в longhand, потому что вы можете сделать его так же непосредственно в нормальном/визуальном режиме нажатием d o и d p.

Лучшей командой для начала этой функции является :Gstatus


Vim - это редактор терминалов (который также имеет порт gui)

Скрытый плагин просто позволит вам редактировать файлы индексов и версий worktree вместе друг с другом и позволять вам diffput/diffobtain, пока вы не будете удовлетворены. Режим Vim diff сложный и гораздо более гибкий/интуитивно понятный, чем git add --patch.

  • scrollbinding
  • подсветка синтаксиса и подсветка интервала между линиями (wordlevel) одновременно
  • автоматическое разворачивание (без изменений)

Вы можете получить убежище здесь

Фрагмент из :he fugitive:

Отредактируйте файл в дереве работ и внесите некоторые изменения. Использование |: Gdiff | открыть индексированная версия. Использовать | сделать | и | dp | на разных ханках, чтобы доставить файлы в синхронизация или использование |: Gread | все изменения. Напишите индексированную версию для выполните этап файла.

Ответ 2

как насчет простой

git diff

чтобы "просмотреть всю картину", а затем

git add -i
5

чтобы выбрать первый файл, который вы хотите зафиксировать, скомпилировать ханки, а затем повторить процесс со следующими файлами?

Ответ 3

Если бы я был в той же ситуации, что и вы (сочетание "ханков", где некоторые "хаки" более важны, чем другие), я бы отдал меньшие куски в свои собственные коммиты с легко различимым сообщением фиксации и оставил только те, более важные "куски, чтобы они не мешали различиям, или git add -i.

С легко различимыми сообщениями фиксации для "менее привилегированных" hunks с ними будет легко справиться позже.