Git 处理 CRLF(回车、换行)的策略是什么?

2023-12-13

我尝试提交以 CRLF 结尾的行的文件,但失败了。

我在 Windows 计算机上花了一整天的时间尝试不同的策略,几乎被吸引停止尝试使用 Git,而是尝试水银.

如何正确处理 CRLF 行结尾?


在问这个问题近四年后,我终于 成立一个让我完全满意的答案!

详细信息请参见github:帮助的指南处理行结尾.

Git 允许您设置行结束属性 直接使用repo文本属性在里面.gitattributes文件。该文件被提交到 回购协议并覆盖core.autocrlf环境, 让您确保所有人的行为一致 用户无论其 git 设置如何。

And thus

这样做的好处是你的行尾 配置现在与您的存储库一起移动,并且您 无需担心是否有合作者 具有正确的全局设置。

这是一个例子.gitattributes file

# Auto detect text files and perform LF normalization
*        text=auto

*.cs     text diff=csharp
*.java   text diff=java
*.html   text diff=html
*.css    text
*.js     text
*.sql    text

*.csproj text merge=union
*.sln    text merge=union eol=crlf

*.docx   diff=astextplain
*.DOCX   diff=astextplain

# absolute paths are ok, as are globs
/**/postinst* text eol=lf

# paths that don't start with / are treated relative to the .gitattributes folder
relative/path/*.txt text eol=lf

有一个方便的准备使用的 .gitattributes 文件的集合对于最流行的编程语言。这对您入门很有用。

一旦您创建或调整了您的.gitattributes,你应该执行一次一劳永逸的行尾重新规范化.

请注意,GitHub 桌面版应用程序可以建议并创建.gitattributes在应用程序中打开项目的 Git 存储库后生成文件。要尝试此操作,请单击齿轮图标(位于右上角)> 存储库设置...> 行结尾和属性。系统会要求您添加推荐的.gitattributes如果您同意,该应用程序还将对您的存储库中的所有文件执行标准化。

最后,注意你的行尾文章 提供更多背景知识并解释 Git 的演变过程 关于手头的事情。我认为这个必读.

您的团队中可能有使用 EGit 或 JGit(Eclipse 和 TeamCity 等工具使用它们)来提交更改的用户。那么你就不走运了,正如 @gatinueta 在这个答案的评论中解释的那样:

如果您的团队中有人使用 Egit 或 JGit,则此设置不会完全满足您的要求,因为这些工具只会忽略 .gitattributes 并愉快地签入 CRLF 文件https://bugs.eclipse.org/bugs/show_bug.cgi?id=342372

一个技巧可能是让他们在另一个客户端提交更改,例如源树。对于许多用例,我们的团队当时更喜欢该工具,而不是 Eclipse 的 Egit。

谁说软件很简单? :-/

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

Git 处理 CRLF(回车、换行)的策略是什么? 的相关文章

  • 具有单个子模块的多个存储库

    我已经找了一段时间但没有找到答案 也许我不知道该看什么 我们有一个主库 它本身就是一个存储库 我们称之为 Lib 它包含我们的大部分模块和子模块 我们还假设它的大小为 2GB 现在我们有很多项目 例如 ProjA ProjB ProjC 每
  • 在我的例子中,GIT 添加恢复(保留更改)

    在我对文件进行更改之后 我用git add FILE NAME 然后 我想将其恢复为未添加但与此同时保留更改 这个怎么做 git reset FILE NAME会做的 See the git reset manual https git s
  • Git:如何正确合并两个功能完全不同的分支?

    想象一下这样一种情况 同一个项目有两个分支 第一个分支的一部分对另一个分支进行了大幅重构 但有一段时间 您需要保持两个分支的功能 因此您需要对两个分支进行错误修复和关键功能添加 有时是以不对称的方式 在某些时候 您必须将重构的分支合并到原始
  • Windows:如何获取所有可见窗口的列表?

    无论如何都要使用相关技术重新标记 我不知道它们是什么 稍后我可能会提出更详细的问题 关于具体细节 但现在我正在尝试掌握 大局 我正在寻找一种方法来枚举 Windows 上的 真实可见窗口 我所说的 真正可见的窗口 就是指 用户所说的 窗口
  • 删除并在另一个文件夹中重新创建后保留文件的 Git 历史记录

    我有以下场景 删除了提交 1 中名为 src GetData cs 的文件 在提交 5 中创建了一个名为 src Get GetDataNew cs 的文件 在提交 7 中将 2 中的文件重命名为 src Get GetData cs 1
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • git push --force-with-lease 总是安全吗?

    我一直遵循的规则是 一旦 git 历史记录被推送到远程存储库 就不再修改它 但我想知道交互式变基到推送 force with lease 是否绕过了这条规则 如果强制租约成功 对其他用户来说是否完全安全 或者此策略有任何注意事项吗 预先感谢
  • BitBucket 应用程序密码:git 命令行访问有哪些权限?

    我了解如何为 BitBucket 创建应用程序密码 如中所述Atlassian 的应用程序密码信息 https support atlassian com bitbucket cloud docs app passwords and 这个答
  • 如何从暂存区删除单个文件(撤消 git add)?

    情况 我有一个 Git 存储库 其中文件已在索引中 我对几个文件进行了更改 打开 Git 并使用 git add 将这些文件添加到我的暂存区域 问题 如何从暂存区域中删除这些文件之一 但不将其从索引中删除或撤消对文件本身的更改 如果我正确理
  • Git Hook - 在我推送到 github 后让服务器拉取

    我有一个本地存储库 并且我在实时服务器上设置了另一个存储库 www site com projects ProjectA 我想要实现的目标非常简单 在我推送到 GitHub 后 我想要存储库位于www site com projects P
  • 如何将yarn add/npm install与monorepos一起使用

    我需要从 GitHub 中的私有 monorepo 下载节点包 类似于 monorepoProject subProjectA subProjectB 还有两个子项目A and 子项目B是 typescript 项目 如下图所示 subPr
  • 为什么 git 默认执行快进合并?

    来自 Mercurial 我使用分支来组织功能 当然 我也希望在我的历史中看到这个工作流程 我使用 git 开始了我的新项目并完成了我的第一个功能 当合并该功能时 我意识到 git 使用快进 即如果可能的话 它会将我的更改直接应用到主分支
  • 如何在 Windows 上使用 cygwin、git bash 和 vagrant VM 中的 git 设置 git?

    My Setup 我们在工作中使用 Windows 10 我的任务是使用 Vagrant 构建一个我们都想使用的开发虚拟机 我们通过 Vagrant SSH 挂载将 git 文件夹挂载到虚拟机中 目前效果非常好 我们还使用 Visual S
  • 使用 Homebrew 安装 Git 时出现问题 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Homebrew 升级 Git 时出现问题 https stackoverflow com questions 12362021 problems upgrading git with home
  • “submodule”似乎是一个 git 命令,但我们无法执行它

    我已经克隆了一个 git 存储库 它是一个 Angular 7 和 NET Core 应用程序 项目中一切正常 但是当我尝试恢复 npm 包时 出现以下错误 Microsoft TeamFoundation Team Explorer Gi
  • 如何仅隐藏一些未提交的更改?

    我正在对 Git 存储库进行重大更改 并意识到某些更改需要向后移植到错误修复分支 我不想签入我的所有更改master因为它们还没有经过充分的测试和准备 但我确实想提取其中一些更改并将它们提交到错误修复分支 然后按原样返回到 master 我
  • Git合并策略:空格使默认显示不冲突并带来意想不到的结果

    经过多次试验 我得到了这个简单的测试用例场景 a gt b gt c master gt d gt b gt e branch Where b 是樱桃精选b e is a merge from master b 之后完成c and c对相同
  • 如何使用 Groovy 获取自上次成功构建以来 Jenkins 的提交信息?

    如何编写自定义 groovy 脚本以轻松操作自上次成功构建以来所有提交的数据 在 gradle maven 步骤之后添加新的构建步骤 gt 执行系统 groovy 脚本 适配代码 import com tikal jenkins plugi
  • 如何使用和理解wso2 git仓库?

    我刚刚开始对wso2感兴趣 我正在寻找移动设备管理解决方案 所以我测试了 wso2 EMM 但我发现了一些限制 我想知道是否可以自己实现 我的问题是我完全迷失在 wso2 git 存储库中 有没有我错过的指导书或逻辑 如果有人帮助我解决这个
  • git 忽略行结尾

    我知道已经有人问过类似的问题 但我仍然无法让它发挥作用 我的项目在使用不同操作系统的人之间共享 而我使用的是 OSX 另外 并不是每个人都使用 git 有时我最终不得不提交其他人的更改 有时 git 会突然说有待处理的更改 查看文件 它们看

随机推荐

  • 将 B 样条曲线拟合到控制路径

    我意识到在 R 中使用 B 样条存在很多问题和答案 但我还没有找到这个 看似简单 问题的答案 给定一组描述控制路径的点 如何拟合 B 样条曲线并沿着曲线提取给定数量的点 例如 100 以进行绘图 问题是路径在 x 和 y 上都不是单调的 控
  • 如何在 Java 中替换字符串中的点 (.)

    我有一个名为persons name 我想更换DOT with 即我的输出将是persons name 我尝试了这段代码 String a str xpath replaceAll a 我收到 StringIndexOutOfBoundsE
  • 如何向网站添加一些非标准字体?

    有没有办法在网站上添加一些自定义字体而不使用图像 Flash或者其他一些图形 例如 我正在开发一个婚礼网站 我发现了很多适合该主题的漂亮字体 但我找不到在服务器上添加该字体的正确方法 我如何将该字体与 CSS 一起包含到 HTML 中 没有
  • R:检查一组变量是否形成唯一索引

    我有一个大数据框 我想检查一组 因子 变量的值是否唯一标识数据的每一行 我当前的策略是按我认为是索引变量的变量进行聚合 dfAgg aggregate dfTemp var1 by list dfTemp var1 dfTemp var2
  • 在循环内调用控制器(crawler4j-3.5)

    嗨 我正在打电话controller inside for loop 因为我有超过 100 个 url 所以我将所有内容都放在列表中 我将迭代并crawl在页面上 我也为 setCustomData 设置了该 url 因为它不应该离开域 f
  • 查看不同dtype下的对象数组

    我想查看一个具有封装整行的 dtype 的对象数组 data np array a 1 a z b a dtype object dt np dtype x object y object data view dt 我收到错误 TypeEr
  • Xamarin 错误:未安装框架:.NETPortable,版本=v4.5

    我成功安装了 Xamarin 并创建了一个新项目 根本没有代码 我在引用下收到以下错误 并收到 Xamarin Forms 丢失的错误 我尝试搜索 但在修复建议有效的地方没有看到同样的错误 谢谢 Error Framework not in
  • 在 WinForm 项目选项卡中运行 exe

    我有兴趣使用我正在编写的 winform 应用程序执行以下操作 以在 Visual Studios 2010 IDE 中的 c 选项卡中打开 exe 我目前可以使用以下代码通过在所需选项卡中单击按钮来打开程序 string str INSE
  • SQL Server 动态查询

    我有 15 个存储过程 它们从公用表返回数据 然后将该表与特定表连接起来以检索库存 Example Common tblCommon Specific tblSpecific 有没有办法可以将名称 tblSpecific 作为变量传递到单个
  • 您尚未接受许可协议。[Android SDK Platform 23]

    我正在使用 React Native 当我运行react native run android运行命令我收到此错误 您尚未接受以下SDK的许可协议 组件 Android SDK 平台 23 Android SDK 构建工具 23 0 1 我
  • C++ 中的 strtok() 类似物

    我只是找不到一种算法来通过大量分隔符将字符串拆分为单词 我知道如何用空格分割字符串istringtream and by 单个分隔符 with getline 我怎样才能将它们全部连接起来 例如 input This is a string
  • 我试图在 svg 元素中创建一个 rect 元素,但它不起作用

    为什么我运行该函数时没有出现红色矩形createRect 任何帮助将非常感激 function createRect var rec document createElement rect rec style width 100px rec
  • 从 Cucumber Stepdefs 中的 Testng.xml 文件读取参数值

    我能够在与 Cucumber 集成时运行 testng 脚本 我已按照中定义的确切步骤进行操作http automatictester co uk 2015 06 11 basic cucumberjvm selenium webdrive
  • 使用combineLatest时如何捕获链式rxjs可观察量的错误?

    继从这个帖子 我有以下 Observable combineLatest this translate get key1 this translate get this translate get key3 this translate g
  • 尝试用C++实现运行长度平滑算法

    这是我的老问题C 中的 RLSA 但我还没有得到任何帮助 我尝试将Matlab代码实现为C 该算法的描述 http crblpocr blogspot fr 2007 06 run length smoothing algorithm rl
  • Log4Net MemoryAppender 似乎错过了高速日志事件

    我正在使用 log4net MemoryAppender 在表单文本框中显示我的 log4net 输出 我的配置文件的相关部分是
  • JComboBox 的值

    是否可以定义与 JComboBox 中的实际内容不同的值 在 HTML 中 它看起来如下
  • 在 Pandas 中使用 group by 进行转换

    我正在创建一个数据框 import pandas as pd df1 pd DataFrame Name Alice Bob Mallory Mallory Bob Mallory City Seattle Seattle Portland
  • 如果我中断 git add 命令会发生什么?

    我运行了以下命令 git add 由于文件很多 gt 10TB 所以添加需要时间 中途我不小心删除了一些文件 我需要恢复 所以 如果我在终端中执行 Ctrl C 中断 Git 会发生什么 git 中将会有部分添加 我可以使用 git che
  • Git 处理 CRLF(回车、换行)的策略是什么?

    我尝试提交以 CRLF 结尾的行的文件 但失败了 我在 Windows 计算机上花了一整天的时间尝试不同的策略 几乎被吸引停止尝试使用 Git 而是尝试水银 如何正确处理 CRLF 行结尾 在问这个问题近四年后 我终于 成立一个让我完全满意