2015-03-17 4 views
10

Когда яGit вернуть все изменения, которые игнорируются GIT дифф -w

git diff -w file_name 

я вижу только добавлены строки, но когда я удалить -w я вижу много удаленных и вновь добавленных строк тоже.

Я хочу изменить файл, чтобы отображать только изменения, которые не игнорируются опцией -w.

Есть ли для этого команда?

+0

Возможно, используя скрипт, похожий на крюк pre-commit, упомянутый в http://stackoverflow.com/a/592014/6309? – VonC

+0

@VonC: Я был бы очень благодарен, если бы вы могли понравиться этому сценарию для нас. –

+0

@ Abhishek вы имеете в виду, как этот? https://github.com/imoldman/config/blob/master/pre-commit.git.sh – VonC

ответ

0

Вы можете сделать

git diff --no-color > stage.diff && git apply -R stage.diff && git apply --whitespace=fix stage.diff && rm -f stage.diff 

Если вы не совершили никаких изменений пока нет.

+0

Это не сработало для меня. Я получаю много ошибок с ошибкой «patch failed». –

5

jupp0r был на правильном пути. Сначала cd в корень вашего репозитория. Затем:

git commit -a -m 'Backup commit.' 
git branch pre-patch 
git reset --hard HEAD~ 
git diff --patch -w HEAD pre-patch > patch.diff 
git apply patch.diff 

Я не уверен, будет ли это работать на двоичные изменения. Если нет, вы можете передать их отдельно заранее. Если этот процесс завершился неудачно, ваш код находится в ветке pre-patch.

Что это делает:

  • Создает коммит и филиал для хранения полных изменений. Это также служит резервным копированием.
  • Возвращает шаг, прежде чем эти изменения были сделаны.
  • Получает «diff -w» из старого кода в новый код, отформатированный как патч.
  • Применяет патч.

Примечание: Если вы уже совершили изменение и хотите его изменить, просто опустите первый шаг.

Смежные вопросы