【问题标题】:Git commit removes line breaksGit 提交删除换行符
【发布时间】:2018-12-29 15:34:42
【问题描述】:

您好,我在使用 git 源代码控制 (2.19.1.windows.1) 在 VSCode (1.30.1) 中提交文件时遇到问题。提交更改了一个文件,我没有更改并且不想更改。设置如下:我在 Windows 10 上,将 git 配置为“签出 windows 样式,提交 unix 样式”git config --global core.autocrlf true。但是当我提交时会发生以下情况。

它是一个带有以下键的 .json 文件:

{
  "description":
    "xxxxxxx"
},

但我的提交将这一行变成了

{
  "description": "xxxxxxx"
},

测试了core.autocrlf inputfalse。但这并不能解决这个问题。以前没有遇到过这种行为。还有其他建议或想法吗?谢谢和欢呼。


更新:另一个例子

创建一个包含

的 test.json 文件
{
  "test1": {},
  "test2": {}
}

完美运行,但添加一个新行,如

{
  "test1": {
  },
  "test2": {}
}

提交后会看起来像第一个。在某种程度上,这似乎是一个样式问题,与编辑器或系统无关,因为其他存储库正在按预期工作。

【问题讨论】:

  • 您在哪里看到了 JSON 的第二个版本? 你提交它之后,你是否在 repo(例如在 GitHub 或 Bitbucket)上查看过它?
  • 本地和github上的
  • 这可能是 VSC 配置问题,VSC 检测/使用此文件的行尾是什么? (见stackoverflow.com/questions/39525417/…
  • 我敢打赌你的编辑器强制设置自动格式
  • 暂时忘记你的 git 配置,你的 VS Code 配置是什么样的?

标签: git line-endings


【解决方案1】:

它应该适用于git config --global core.autocrlf false

或者你可以试试

.gitattributes 文件。您可以将其用作存储库的模板:

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

【讨论】:

    【解决方案2】:

    问题与 lint-staged 库与 package.json

    中的 precommit 挂钩有关
    {
      "scripts": {
        "precommit": "lint-staged"
      }
    }
    

    由于给定的 linting 规则,它会在提交前格式化代码。如果您想了解更多详细信息,请查看正在使用它的@ngrx/platform library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 2011-09-03
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      相关资源
      最近更新 更多