我正在尝试使用git diff将.patch文件应用于单个.cpp文件。
这些是我的文件:old.cpp、new.cpp和fix.patch。
old.cpp是未修改的原始源代码,new.cpp是修改后的源代码,而fix.patch是我要创建的补丁,当应用于old.cpp时,应该将 new.cpp 的更改应用到它。old.cpp和new.cpp都以Windows (CR LF)行结尾,两个文件都是918 KB大,源代码中只修改了一行。
我通过将两个文件old.cpp和new.cpp放在同一个文件夹中并使用带有命令的Git Bash提示符来创建补丁:
git diff -u old.cpp new.cpp > fix.patch
fix.patch文件成功出现,但是当我实际测试它并使用Git Bash将其应用于 old.cpp时,键入:
patch old.cpp fix.patch
该补丁已成功应用,但old.cpp 的大小从918 KB减少到894 KB。在对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。