Вот адаптация из связанного вопроса .
git diff -w --no-color | git apply --cached --ignore-whitespace
Преимущество заключается в том, что вам не нужно использовать stash
, временные файлы или выполнять reset --hard
в рабочих папках.
Добавление
Решение, приведенное выше, только изменяет этапы, за исключением изменений только с пробелами. Это не относится к патчу, хотя использование --patch
для постановки не так просто в этой ситуации.
Вариант исправления 1: редактировать различия в текстовом редакторе
Есть много способов реализовать это с помощью текстового редактора. Vim особенно подходит для этого.
В корневом каталоге вашего репозитория запустите Vim.
В обычном режиме загрузить diff в пустой буфер с помощью ...
:r !git diff -w --no-color
:set ft=diff # if you want syntax highlighting
Отредактируйте diff и удалите части, которые вы не хотите ставить.
Чтобы настроить содержимое буфера vim, выполните команду vim ex ...
:w !git apply --cached --ignore-whitespace
Если вы поклонник Vim, вы также можете использовать визуальный режим для постановки!
:<',>'w !git apply --cached --ignore-whitespace
Вы можете зафиксировать поэтапные изменения командой ex ...
:!git commit -m "message"
# or
:!git commit
Очистите буфер, прочитайте неотмеченные изменения и повторите
:bd! | set ft=diff | r !git diff -w --no-color
В конце концов, вам останутся только изменения пробелов для фиксации.
Если вы не используете Vim, вы также можете сбросить git diff
в файл, отредактировать файл, сохранить, а затем передать файл в git apply
. Подтвердите и повторите до конца. Это немного утомительно, но функционально.
Вариант исправления 2: Сброс исправления
Это назад от git add --patch
, но после того, как вы поставили непропуск, меняется с ...
git diff -w --no-color | git apply --cached --ignore-whitespace
... вы можете удалить фрагменты в режиме патча с помощью ...
git reset --patch .
Помните, что вы удаляете изменения, которые хотите сохранить. Повторяйте и фиксируйте при необходимости, пока не останетесь только изменения пробелов.