python 关于git下unix和windows换行符不同导致稍微改动一行代码git diff就是全部文件对比的解决方案

2023-10-26

背景:

家里的电脑是用来打游戏的,配置也还可以,windows的,偶尔也会用来写写代码。

公司是mac。pycharm的默认配置:Pycharm》Settings》Editor》Code Style》Line separator是Classis Mac,也就是\r,真是尴尬。

导致每一次提交代码,就算是一行代码,git diff也是整个文件的增删。

思路:

谷歌到是换行问题:LR = \n, CRLR = \r\n, CR = \r,跨平台导致之。

其实好解决,就是统一成\n即可。

方案:

1、把pycharm的换行配置改成Unix and OS X(\n) ;

2、git 配置如下:

git config --global core.autocrlf input
这样子git commit的时候,如果我们是CRLF,会报错...如果是CR的话,依旧不会报错,真是可恶。git只能帮我们到这里了吗?

3、写个脚本帮我们把之前被影响的文件修改回来。

这个本来想找现有轮子的,结果无论是doc2unix还是什么别的,都无法解决这个CR换行符也就是\r的问题,CRLF和LF倒是转的挺溜的,无奈自己造轮子:

# coding=utf-8
import os

root = '/Users/ouyang/PycharmProjects/myApp/'
all_cnt = real_cnt = 0

for root, dirs, files in os.walk(root):
    for file in files:
        fullpath = os.path.join(root, file)
        if file.split('.')[-1] == 'py':
            print fullpath
            tmplines = []
            all_cnt += 1
            with open(fullpath, 'r') as infile:
                lines = infile.readlines()
                if len(lines) == 1:  # 如果是CR模式,则读出来的lines只有一行...
                    real_cnt += 1
                    print 'CR MODE!!!'
                    all = lines[0].replace('\r','\n')

                    with open(fullpath, 'w') as outfile:
                        outfile.write(all)
print all_cnt, real_cnt









本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 关于git下unix和windows换行符不同导致稍微改动一行代码git diff就是全部文件对比的解决方案 的相关文章

随机推荐

  • C++指向类成员的函数指针

    指向类成员函数的函数指针 定义 类成员函数指针 member function pointer 是 C 语言的一类指针数据类型 用于存储一个指定类具有给定的形参列表与返回值类型的成员函数的访问信息 基本上要注意的有两点 1 函数指针赋值要使
  • docker报错:Cannot connect to the Docker daemon. Is the docker daemon running on this host?

    docker这种报错一般情况都是docker未启动对于这种情况只用重启docker就行了 service docker restart 还有一种情况则是docker配置文件出错按照提示查看报错 并找到相应位置进行更改 systemctl s
  • EL表达式

    一 EL表达式 1 命令格式 作用域对象别名 共享数据 2 命令作用 1 EL表达式是EL工具包提供一种特殊命令格式 表达式命令格式 2 EL表达式在JSP文件上使用 3 负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体 二
  • VUE中使用swiper

    效果图 安装 vue awesome swiper npm install vue awesome swiper 3 main js引入 引入swiper import VueAwesomeSwiper from vue awesome s
  • 导师放养也能投顶会?我从零开始、历经3次拒稿、最终发CVPR顶会论文的全过程分享!

    你想发顶会论文 或者做科研 但是导师放养 不管你 没有人带你 应该怎么办 要怎么起步 我会分3个版块 告诉你如何解决这个问题 一 导师在科研中本该起什么作用 1 科研的全流程是什么样 第一块 大家首先要对科研有一个整体的认知 科研的整个流程
  • BP神经网络——基于近红外光谱的汽油辛烷值预测

    BP神经网络 基于近红外光谱的汽油辛烷值预测 问题描述 获取数据 解题思路及步骤 1 产生训练集 测试集 2 创建 训练BP神经网络及仿真测试 3 性能评价 4 绘图 Matalab代码 问题描述 辛烷值是汽油最重要的品质指标 传统的实验室
  • 如何用c++实现异常处理

    博客主页 开心档博客主页 欢迎关注 点赞 收藏 留言 本文由开心档原创 51CTO首发时间 2022年12月16日 这世界很喧嚣 做自己就好 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢 本文介绍 异常是程序在执行期间产生的
  • 开发网站的过程中,经常会参考一些网站

    在我个人开发网站的过程中 经常会参考一些网站 我不擅长美工 所以一般页面都喜欢直接拿来用 再自己修饰一下 以下一些网站是我经常访问的 共享给大家 站酷 url http www zcool com cn url 拥有丰富的网站资源与模板 很
  • Effective C++

    条款01 视C 为一个语言联邦 将 视为一个由相关语言组成的联邦而非单一语言 条款02 尽量以const enum inline替换 define define处理与预处理阶段 而非编译阶段 因此此条款也可称为 宁可以编译器替换预处理器比较
  • 小白如何启动Vue项目?

    首先查看是否已经安装了 node js node v 之后 命令行会返回本机电脑上具体的版本号 如此 说明已经安装了nodejs 如果没有安装nodejs 请移步官网自行下载 https nodejs org zh cn node js安装
  • CSS学习笔记

    CSS 定义网页内容的样式 一 CSS引入 即如何将html与css联系起来 1 行内样式 将style作为一个标签的属性赋值 只能作用于当前标签 p align center style color red 将style作为一个标签的属性
  • UnitBox论文笔记(IOUloss)

    文章目录 Motivation 关于其他论文的一些观点 IoU损失 l2损失的缺点 iou损失forward过程 反传推导 UNITBOX NETWORK UnitBox An Advanced Object Detection Netwo
  • 华为OD机试 - 乱序整数序列两数之和绝对值最小(Java )

    题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元
  • 机器学习模型的可解释性——LIME

    以下文章摘录自 机器学习观止 核心原理与实践 京东 https item jd com 13166960 html 当当 http product dangdang com 29218274 html 由于博客系统问题 部分公式 图片和格式
  • WebSocket入门教程(一)-- WebSocket简介

    转载请标明出处 http blog csdn net u010136741 article details 51502509 本文出自 柳木木 kylin 总目录 WebSocket入门教程 大纲 WebSocket是什么 WebSocke
  • CSS灯光效果,背景黑金效果

    先看效果 再看代码
  • 太阳能板最大面积

    题目描述 给航天器一侧加装长方形或正方形的太阳能板 图中的红色斜线区域 需要先安装两个支柱 图中的黑色竖条 再在支柱的中间部分固定太阳能板 但航天器不同位置的支柱长度不同 太阳能板的安装面积受限于最短一侧的那根支柱长度 如图 现提供一组整形
  • HTTPS阿里云免费SSL证书申请教程来了(白嫖指南)

    阿里云免费SSL证书是digicert品牌的DV单域名证书 一个阿里云账号一年可以申请20张免费SSL证书 免费SSL证书是在阿里云数字证书管理服务控制台申请的 阿里云百科来详细说下阿里云免费SSL证书申请方法 证书下载及第二年到期续费说明
  • 定位城市+iOS8 定位问题

    在IOS8中定位功能新增了两个方法 void requestWhenInUseAuthorization OSX AVAILABLE STARTING MAC NA IPHONE 8 0 void requestAlwaysAuthoriz
  • python 关于git下unix和windows换行符不同导致稍微改动一行代码git diff就是全部文件对比的解决方案

    背景 家里的电脑是用来打游戏的 配置也还可以 windows的 偶尔也会用来写写代码 公司是mac pycharm的默认配置 Pycharm Settings Editor Code Style Line separator是Classis