为什么git关心我文件中的尾随空格?

Bjo*_*orn 34 git whitespace

无论我使用哪种VCS来担心我放入文件中的内容,它有什么作用?我不明白这里的意思.是git版本控制还是语法检查?

Bri*_*ell 31

这是因为Git的一个常见用途是通过电子邮件发送补丁系列.尾随空格会导致电子邮件出现问题,因此通常会被删除,这意味着在通过电子邮件发送补丁并应用补丁的过程中,任何尾随空格都将丢失.这反过来意味着如果repo中的行上有尾随空格,但是在应用的补丁中没有,那么在应用补丁时,可能会出现虚假冲突或无意的额外更改.

默认情况下,此预提交挂钩已启用,但不再启用.我好像错了; 它默认情况下从未故意启用.正如其他人所指出的那样,这一直是一个预先提交的样本钩子; 过去通过不给它执行位来禁用它,但这可以很容易搞砸(例如,在Windows上的Cygwin下运行),所以在较新版本的Git(自一年多以前)样本有因被命名而被禁用pre-commit.sample..git/hooks/pre-commit如果您不喜欢该行为,可以删除或移动您的以防止执行此挂钩.您还应该将Git更新为更新的内容,因为这已经修复了很长一段时间.

  • ****默认情况下没有启用**. (8认同)
  • 我很抱歉; 我被这个多次被咬的事实弄错了,但我现在意识到它总是在Cygwin之下. (2认同)
  • @Brian:我对apphacker非常狡猾,不是你.事实上,我猜那个apphacker也有同样的事情:Cygwin,但他的语气是......好吧......不愉快.:) (2认同)

hob*_*bbs 10

Git根本不关心.该例子 pre-commit钩子做了空白支票如何写一个钩子,但它不是一个示范启用默认; 你必须使它可执行,以便它做任何事情.


Jak*_*ski 5

为什么?因为尾随空白很容易丢失,导致虚假更改和未应用补丁(由于空白更改)。这是符合编程风格的问题

也就是说,这是一个pre-commit 钩子的问题:您可以编辑它,或禁用它,或配置尾随空格(可能仅适用于某些类型的文件)不被视为错误。


pre-commit勾应禁用 默认的,而是用来安装这些旧版本(1.6.0前)关闭具有可执行权限关闭,这可能会在非UNIX不工作文件系统,如FAT; 从 1.6.0 开始,它们通过附加“.sample”后缀而被关闭(禁用)。