Nei*_*kar 143 git emacs newline
所以我认为它可能与textmate有关,但是我们在一个小团队中工作,并且在git中存在几个相同文件的完整文件冲突的问题,因为一个分支的每一行都附加了^ M.
这个神秘的^M角色应该做什么,它可能来自哪里?
我们的开发人员在Windows/Mac上使用emacs,在Mac上使用TextMate,在Mac上使用coda,偶尔使用wp-admin文本编辑器.
任何人都有这个问题源于其中一个?
Jos*_*Lee 101
在git-config中,设置core.autocrlf为true使git自动为您的平台正确转换行结尾,例如运行此命令进行全局设置:
git config --global core.autocrlf true
Run Code Online (Sandbox Code Playgroud)
Bro*_*oam 93
我认为这是Windows用户,因为他们喜欢他们的CRLF.Unix喜欢LF和Mac喜欢CR,直到它以Unix方式显示.
Sin*_*nür 30
^M是0x0d,即回车字符.如果您的显示器看起来像
line 1^M line 2^M
然后该文件必须来自Windows,因为Windows上的标准换行序列是CR LF(0x0d 0x0a)而标准换行序列仅由LFUnices组成.
如果文件来自Mac OS 9或更早版本的系统,您会看到它
line 1^Mline 2^M
因为回车后没有换行.
小智 20
要使^ M在git中消失,请键入:
git config --global core.whitespace cr-at-eol
Run Code Online (Sandbox Code Playgroud)
致谢:https: //lostechies.com/keithdahlby/2011/04/06/windows-git-tip-hide-carriage-return-in-diff/
它们与DOS风格的行结尾和Unix风格之间的区别有关.查看维基百科文章.您可以找到dos2unix工具来帮助,或者只是编写一个小脚本来自行修复它们.
编辑:我在这里找到了以下Python示例代码:
string.replace( str, '\r', '' )
Run Code Online (Sandbox Code Playgroud)
^MEmacs 中行尾的字符表示回车符 (\r) 后跟换行符 (\n)。如果有人在 Windows 上编辑文件(其中行尾是回车符和换行符的组合),而您在 Unix 或 Linux 中编辑文件(其中行尾只是换行符),您经常会看到这种情况。
字符的组合通常是无害的。如果您使用源代码管理,则可以配置文本文件签入格式,以便为您神奇地调整行。或者,您可以使用签入和签出触发器来自动为您“修复”文件。或者,您可能只使用像dos2unix这样的工具来手动调整。
我在Mac OS上使用Android Studio(JetBrains IntelliJ IDEA),我的问题是^ M开始出现在GitHub的 pull请求中的某些文件中。对我有用的是更改文件的行分隔符。
在编辑器中打开所需的文件,然后依次转到“ 文件”和“ 行分隔符”,然后 为您选择最佳选项 (对我而言,这是LF-Unix和OS X(\ n))
根据下一篇文章,此问题是操作系统之间行尾混淆的结果:http : //jonathonstaff.com/blog/issues-with-line-endings/
您可以在这里找到更多信息:https : //www.jetbrains.com/help/idea/configuring-line-separators.html#d84378e48
将以下~/.emacs物品放入您的(或等价物)中
(defun dos2unix ()
"Replace DOS eolns CR LF with Unix eolns CR"
(interactive)
(goto-char (point-min))
(while (search-forward "\r" nil t) (replace-match "")))
Run Code Online (Sandbox Code Playgroud)
然后您就可以简单地使用M-x dos2unix。
| 归档时间: |
|
| 查看次数: |
87056 次 |
| 最近记录: |