Я пытаюсь применить файл .patch к одному файлу .cpp , используя git diff .
Это моифайлы: old.cpp , new.cpp и fix.patch .
old.cpp - оригиналнеизмененный исходный код, new.cpp - измененный источник, а fix.patch - это патч, который я хочу создать, который при применении к old.cpp должен применятьизменяется с new.cpp на него.Оба old.cpp и new.cpp имеют Windows (CR LF) окончания строк, оба файла имеют размер 918 КБ большой, толькоодна строка изменяется в источнике.
Я создаю патч, помещая два файла old.cpp и new.cpp в одну папку и используя Git Bash приглашение с командой:
git diff -u old.cpp new.cpp > fix.patch
Файл fix.patch успешно появляется, но когда я действительно проверяю его и применяю к old.cpp с Git Bash , набрав:
patch old.cpp fix.patch
, патч успешно применяется, но размер old.cpp уменьшает от 918 КБ до 894 КБ .После некоторых исследований с kdiff3 я обнаружил, что мой недавно созданный файл fix.patch содержит Unix (LF) окончания строк и после применения к old.cpp , исправленный old.cpp также принимает Unix (LF) окончания строки.Я думаю, что это причина, почему размер файла old.cpp тоже уменьшается.
У меня вопрос, какую команду следует использовать в git или что еще мне нужно сделать, чтобы мой недавно созданный файл fix.patch остался с Windows (CR LF) окончаниями строк и после применения патча к old.cpp только что пропатченный old.cpp файл с Windows (CR LF) также заканчивается в конце строки, и размер файла не так сильно уменьшается.Я получил здесь предложение использовать git apply
вместо patch
, но я не знаю, что именно печатать после git apply
, поэтому он работает так, как я хочу для своей ситуации .: (
Я использую Windows XP SP2 , Git 1.7.6 , Git Extensions 2.24 и Microsoft Visual C ++ 2010 .