提问者:小点点

如何在 Git 推送和拉取上格式化代码


我目前正在与不同的开发人员一起使用不同的语言(TS、TSX)进行开发项目。此外,我们使用Pretier/ESLint,但这是一个细节。

一些开发人员习惯于使用2个缩进和空格进行开发。有些人使用4个缩进,更喜欢制表符。

问题是,当我们从github获取代码时,缩进可能是另一个开发人员的缩进,因此不是与我们对应的缩进。当开发人员检索缩进为2的代码时,正在使用4个缩进,整个文件被检测为被git修改。

是否有可能在克隆/拉取/获取时执行代码的格式化以匹配我们的偏好?在创建拉取请求/推送/提交时,格式化代码以使其与存储库中存在的代码相对应?

我们尝试了几种方法来解决这个问题,但都没有成功:

> < li>

我们尝试使用清洁和涂抹,但从未成功:< br > git可以自动在空格和制表符之间切换吗?

我们尝试了github动作,问题是要找到具体的修改,一点也不实用。


共2个答案

匿名用户

推送和获取不是可以格式化代码的点,因为 Git 只是推送或获取已经存在的数据。除了删除和压缩它之外,它实际上不会以任何方式更改发送的数据。

然而,大多数组织这样做的方式是设置一组代码标准和一个lint工具来强制执行它们。例如,在Rust中,您可能会使用4个空格和rustfmt来格式化代码。然后,您设置CI来运行检查的lenter或样式,如果不正确,则失败。因此,如果代码不符合代码样式,则无法合并代码。

虽然欢迎每个人对如何格式化代码有自己的偏好,但当你在一个项目上一起工作时,要求每个人就一组标准达成一致是完全正常和合理的。不是每个人都喜欢它:围棋团队明确同意标准围棋风格不是任何人的最爱,但它是一个固定的标准,每个人都遵守它。我自己严格执行了与我首选样式不同的代码样式更改,仅仅是因为每个人都使用相同的样式更重要。

如果你有一个工具来自动格式化代码,这会变得容易得多,因为这样每个人都可以运行该工具,并且可以自动检查它,而无需在代码审查中考虑它。

请注意,如果需要,可以提供预提交钩子,但不需要它们,因为用户在高级工作流中创建格式不正确的临时提交可能很有用。由于 Git FAQ 提到开发人员计算机上的挂钩不是有效的控件,因此无论如何都需要设置 CI。

匿名用户

您可能会发现这篇文章很有帮助;作者展示了如何通过本地预提交工作流(或钩子)以及PR动作使用clang-format来实施代码风格。

至少,.editorconfig文件是一个好主意,只要团队成员在进行更改后明智地运行一个简单的自动格式,缩进样式和空格就不会成为问题。对我来说,运行自动格式化快捷方式很快就和CTRLS一样习惯了。