Я пытаюсь применить файл .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) и после применения его к < strong>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.
git config core.autocrlf
.) Другая вещь, которая мне не ясна из вашего вопроса, это то, как именно вы применяете патч? Это сpatch
в приглашении CygWin,patch
в приглашении Git Bash,git apply
и т. д.? - person Mark Longair   schedule 21.08.2011git config core.autocrlf
, мне вернулиtrue
. Я используюpatch
в командной строке Git Bash. - person Placeholder   schedule 21.08.2011