我被git用Windows/Linux行结束问题所困扰.看来,通过GitHub,MSysGit和其他来源,最好的解决方案是让你的本地存储库设置为使用linux风格的行结尾,但设置core.autocrlf为true.不幸的是,我没有及早做到这一点,所以现在每次我进行更改时,行结尾都会被剔除.
我以为我在这里找到了答案,但我无法让它为我工作.我的Linux命令行知识充其量是有限的,所以我甚至不确定"xargs fromdos"行在他的脚本中做了什么.我不断收到关于没有这样的文件或目录的消息,当我设法将它指向现有目录时,它告诉我我没有权限.
我在Windows上通过Mac OS X终端尝试使用MSysGit.
我用三个提交创建了一个补丁
git format-patch <revision_three_commits_ago>
Run Code Online (Sandbox Code Playgroud)
这会创建三个我从笔记本邮寄的补丁文件,并在我的桌面计算机上读取邮件(两个都是Windows框).
我什么时候做
git am --3way --ignore-space-change *.patch
Run Code Online (Sandbox Code Playgroud)
补丁适用,但我没有为提交获得相同的SHA1 ID.在修补文件中搜索了一下,我发现台式计算机上的修改后的行结束了LF,而笔记本上的修改后的行(我创建了修补程序)结束了CR LF.
所以,我的第一个念头就是打电话给git am没有--ignore-space-change,但是这给了我一个错误(补丁不适用).
我怎么能告诉git format-patch或者git am如何处理行结尾(msysgit 1.7.4)?
难道我真的拿VIM和更改文件格式UNIX来DOS之前,我可以应用补丁?
编辑:甚至没有用VIM修改补丁文件有帮助:我想,set ff=dos一个:%s/^M//g会有所帮助,但事实并非如此!
在我看来,应用补丁应该会产生完全相同的内容,也会产生相同的提交哈希值,就像我从创建补丁的其他repo中提取的那样.我错了吗?