【嵌入式开发 Linux 常用命令系列 4.5 -- 去除 git diff 时出现的 ^M】


请阅读嵌入式及芯片开发学必备专栏


去除 git diff 时出现的 ^M

git config --global core.whitespace cr-at-eol

git config --global core.whitespace cr-at-eol 是一个用于配置 Git 如何处理空白字符的选项。具体地说,它用于检测行尾的回车符(CR,\r)。这个配置在处理跨平台项目时尤其有用,因为不同操作系统通常使用不同的行结束符(Windows 使用 CRLF,Unix/Linux 使用 LF)。
在这里插入图片描述

图 1-1 处理前

选项解释
  • git config --global:表示将配置应用到全局(用户级)配置文件中,即 ~/.gitconfig。这意味着该配置将适用于当前用户的所有 Git 仓库。
  • core.whitespace:这是 Git 的核心配置选项之一,控制 Git 如何处理空白字符。
  • cr-at-eol:表示检测并标记行尾的回车符(CR,\r),在某些情况下特别有用,例如确保代码库中的文件使用一致的行结束符。
  • 在这里插入图片描述
  • 图 1-2 处理后

为什么使用 cr-at-eol

在跨平台项目中,不同操作系统的行结束符可能会导致一些问题。例如,Windows 使用 CRLF(\r\n)作为行结束符,而 Unix/Linux 使用 LF(\n)。配置 cr-at-eol 可以帮助你检测并处理这些差异,确保代码库的行结束符一致。

如何配置

使用以下命令将 core.whitespace 配置为检测行尾的回车符:

git config --global core.whitespace cr-at-eol

使用示例

假设你正在处理一个跨平台项目,并且你希望检测并处理所有包含行尾回车符的文件。以下是一个简单的示例:

  1. 配置 Git
    首先,运行以下命令配置 Git 以检测行尾的回车符:
    git config --global core.whitespace cr-at-eol
    
  2. 创建一个示例文件
    创建一个包含行尾回车符的文件,例如 example.txt
    Line 1\r
    Line 2\r
    Line 3\r
    
  3. 添加文件到 Git
    将文件添加到 Git 仓库并提交:
    git add example.txt
    git commit -m "Add example.txt with CR at end of line"
    
  4. 运行 git diff 检查空白问题
    使用 git diff 命令查看文件中的空白问题:
    git diff --cached --check
    
    这将输出如下信息,指示行尾存在回车符:
    example.txt:1: trailing whitespace.
    example.txt:2: trailing whitespace.
    example.txt:3: trailing whitespace.
    

纠正行尾回车符

如果你希望纠正这些行尾回车符,可以使用以下步骤:

  1. 移除行尾回车符
    你可以使用 dos2unix 工具来转换文件中的行结束符:
    dos2unix example.txt
    
  2. 再次添加文件到 Git
    添加修改后的文件并提交:
    git add example.txt
    git commit -m "Remove CR at end of line"
    
  3. 验证修改
    再次运行 git diff 命令,确保没有行尾的回车符:
    git diff --cached --check
    
    如果没有输出,表示行尾回车符问题已经解决。

Sumamry

配置 git config --global core.whitespace cr-at-eol 可以帮助你在跨平台项目中检测并处理行尾的回车符,确保代码库中的行结束符一致。这对于维护代码的可移植性和一致性非常有用。通过示例,你可以看到如何配置、检测和处理行尾回车符问题,从而提高代码质量。

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
diff出现^M字符的问题,其实是由于不同操作系统的换行符导致的。在Windows系统中,换行符是由\r\n组成的,而在Unix和Linux系统中,换行符只有\n。当你在一个操作系统上编辑文件,然后在另一个操作系统上查看,就会出现换行符的差异。 为了解决这个问题,你可以使用git的配置来处理换行符的差异。其中一种解决方案是通过设置core.whitespace选项为cr-at-eol,可以忽略换行符的差异。你可以在命令行中运行以下命令来设置这个选项: git config --global core.whitespace cr-at-eol 另一种解决方案是通过设置core.autocrlf选项为input来在提交将换行符转换为LF。你可以在命令行中运行以下命令来设置这个选项: git config --global core.autocrlf input 这些配置可以帮助你在git diff中正确显示修改点,避免出现^M字符。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [解决git diff的^M问题](https://blog.csdn.net/w727655308/article/details/125616499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [git diff 查看修改出现 ^M 换行符不匹配](https://blog.csdn.net/xy862578733/article/details/124165748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值