【问题标题】:Disable code formatting when working with an SCM使用 SCM 时禁用代码格式化
【发布时间】:2014-10-23 14:14:12
【问题描述】:

我目前正在为某个存储库处理 Git 拉取请求。我已经完成了典型的步骤:fork -> 添加一些更改 -> 提交 -> 推送到分叉的 repo,然后创建一个 PR。

我对 Git 非常熟悉,并且已经创建了很多 PR,但是一个特定的项目开始导致一些格式问题。

当我推送更新分支并前往 github UI 检查我的 PR 更改时,我看到许多似乎与格式化我的代码的 Intellij IDEA 相关的差异更改。这是一个示例:

这些部分指的是什么?为什么 Intellij 删除一个 are 并添加完全相同的一个,所以它被标记为差异?

实际上,这些更改让我的 PR 难以阅读,即使对我来说也是如此,我相信项目所有者不会接受这样的恐怖。

所以我的问题是,如何处理这种情况?我可以禁用代码格式化并处理我的 PR 吗?还有其他提示吗?

我正在向 Intellij + Git 专家提出我的问题,所以请建议我是否应该遵循一些实践(好的)。

问候。

【问题讨论】:

  • 许多工具都提供了忽略空白更改的选项。这可以被激活,以便能够专注于实质性的变化。不过,我至少会从表面上回顾所有空白更改。
  • 你能列出其中一个工具吗?这对我来说似乎太危险了,因为我之前做过很多 PR 并且从未遇到过这样的问题,因为我总是设法将我的 ide 启动规则调整到我将承诺的回购规则。
  • 我相信 IDEA 可以。除此之外:gitk、meld、Eclipse 和许多 git 命令都接受 -w 选项来完成它。但我想我误读了你的问题;这些选项对于合并拉取请求的人很有用。您的问题更适合 IDEA 专家。
  • 正如我所想,我的问题应该从开发者的角度而不是提交者的角度来考虑。感谢您提及其中一些选项:)

标签: git github intellij-idea code-formatting pull-request


【解决方案1】:

实际上,这不是 IDE 问题,因此 Intellij IDE 与它无关。 问题实际上是由于 Git 如何处理行尾

根据一些 SO 帖子并尝试了多种解决方案,我最终以 @VonC suggestion 禁用行尾修改,并在他所说的地方:

我会坚持不要尝试自动转换任何东西,副作用太重要了(就潜在的合并冲突而言,尤其是在具有不同环境的分布式开发方面)

所以简单地执行以下命令将阻止 Git 更改任何内容:

git config --global core.autocrlf false

然后不得不打扫 (我选择再次抓取远程分支以从头开始并使用干净的工作副本)我的工作目录。

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 2019-02-24
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多