Зафиксировать только часть файла в Git

  1. Выход Iconv diffs
  2. Для простых 7-битных патчей (чистый английский) вы можете игнорировать сумасшедшее обнаружение Notepad ++: patch-content не содержит определения charset
2552
задан Community 7 March 2017 в 18:03
поделиться

5 ответов

Вы можете использовать git add --patch (или -p для краткости), и git начнет разбивать ваш файл на то, что он считает разумными «фрагментами» (частями файла). Затем он предложит вам следующий вопрос:

Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?

Вот описание каждой опции:

  • y подготовить этот фрагмент для следующей фиксации
  • n не использовать этот фрагмент для следующей фиксации
  • q выйти; После этого вы можете продолжить с git add -p .

    После этого вы можете использовать:

    • git diff --staged , чтобы проверить, что вы внесли правильные изменения
    • git reset -p для деактивации ошибочно добавленных фрагментов
    • git commit -v для просмотра вашего коммита при редактировании сообщения о коммите.

    Обратите внимание, что это сильно отличается от формата git- patch команда, предназначенная для синтаксического анализа данных фиксации в файлах .patch .

    Ссылка на будущее: Git Tools - Interactive Staging

3484
ответ дан 22 November 2019 в 19:51
поделиться

git gui предоставляет эту функциональность в режиме просмотра различий. Просто щелкните правой кнопкой мыши интересующие вас строки, и вы увидите пункт меню «Подготовить эту строку для фиксации».

137
ответ дан 22 November 2019 в 19:51
поделиться

Вы можете использовать git add --interactive или git add -p < file > , а затем git commit ( не git commit -a ); см. Интерактивный режим на странице git-add или просто следуйте инструкциям.

В современном Git также есть git commit --interactive git commit --patch , ярлык для опции patch в интерактивной фиксации).

Если вы предпочитаете делать это из графического интерфейса, вы можете использовать git-gui . Вы можете просто отметить куски, которые хотите включить в коммит. Лично мне это проще, чем использовать git add -i . Другие графические интерфейсы git, такие как QGit или GitX, также могут иметь эту функцию.

243
ответ дан 22 November 2019 в 19:51
поделиться

Если вы используете emacs, взгляните на Magit , который предоставляет интерфейс git для emacs. Он достаточно хорошо поддерживает промежуточные блоки (части файлов).

12
ответ дан 22 November 2019 в 19:51
поделиться

Для emacs существует также gitsum

2
ответ дан 22 November 2019 в 19:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: