有时,当我尝试向开源项目贡献代码时,该项目尚未格式化并且包含 UNIX 和 Window 行结尾。我的“智能”IDE 会以某种方式检测每个文件使用哪种类型的结尾,如果它检测到 Windows 行结尾,那么我的所有更改都将具有 Windows 行结尾(显示为^M
in git diff
)。如何仅从更改的行而不是整个文件中删除这些 Windows 行结尾?
假设您的更改未提交,则以下操作应该有效:
git stash save 'backup-before-removing-windows-line-endings' &&
git stash show -p | perl -pe 's/^([+][^\r]*)\r/$1/g' | git apply - &&
git stash drop
解释:
-
将您的更改备份为存储:
git stash save 'backup-before-removing-windows-line-endings'
-
输出您隐藏的更改(git stash show -p
) 但删除回车符 (\r
)在更改的行中(特别是以 a 开头的行)+
) using perl
。将结果通过管道传送到git apply -
重新应用您的更改,无需回车。
git stash show -p | perl -pe 's/^([+][^\r]*)\r/$1/g' | git apply -
-
如果上述命令成功,请删除您的备份存储:
git stash drop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)