有时,当我尝试将代码贡献给开源项目时,项目尚未格式化,并且包含UNIX和Window行结尾。我的聪明" IDE将以某种方式检测每个文件使用哪种类型的结尾,如果它检测到Windows行结尾,那么我的所有更改都将具有Windows行结尾(在{% extends "blog/base.html" %}
{% block title %}Search{% endblock %}
{% block content %}
{% if results %}
<h1>Posts containing "{{ cd.query }}"</h1>
<h3>Found {{ total_results }} result{{ total_results|pluralize}}</h3>
{% for result in results %}
{% with post=result.object %}
<h4><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h4>
{{ post.body|truncatewords:5 }}
{% endwith %}
{% empty %}
<p>There are no results for your query.</p>
{% endfor %}
<p><a href="{% url 'blog:post_search' %}">Search again</a></p>
{% else %}
<h1>Search for posts</h1>
<form action="." method="get">
{{ form.as_p }}
<input type="submit" value="Search">
</form>
{% endif %}
{% endblock %}
中显示为^M
)。如何仅从我更改的行而不是整个文件中删除这些Windows行结尾?
答案 0 :(得分:6)
假设您的更改未提交,则以下内容应该有效:
git diff
将您的更改备份为存储:
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
开头的行)的回车(+
)。将结果传递给perl
以重新应用您的更改,而无需回车。
git apply -
如果上述命令成功,请删除备份存储:
git stash show -p | perl -pe 's/^([+][^\r]*)\r/$1/g' | git apply -