即使在硬重置后子模块也总是被修改

Submodule is always modified even after hard resets

我的子模块显示已被修改(我没有触及那里的任何东西)。我一直试图硬重置它无济于事:

~dom/gitmodules/emacswiki heads/master*
❯ git reset --hard upstream/master                                                                         141
HEAD is now at f54d96c32 How to grant GNU Emacs for OS X full disk access

~dom/gitmodules/emacswiki heads/master*
❯ git status -s                              
 M AucTeX
 M AutoLisp
...

我试过:

cd ../
git submodule deinit -f .
git submodule update --init
git submodule update -f --recursive

同样,它什么也没做。

这个:

It's git://github.com/emacsmirror/emacswiki.org.git, and yes, I am on macOS.

是关键。在 macOS 上克隆该存储库,并使用相当现代的 Git 检查 f54d96c32 附近的一些提交,但在 case-folding 文件系统(如 macOS 上的默认文件系统)上,给出很多警告:

warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'Anything'
  'anything'
  'Artagnon'
  'artagnon'
  'AUCTeX'
  'AucTeX'
  'AutoLISP'
  'AutoLisp'
  'BookMarks'
  'Bookmarks'

[更多被剪断]

在区分大小写的文件系统上检查提交 f54d96c32,例如,我们可以比较两个文件 AutoLISP 与 AutoLisp:

$ file AutoLISP AutoLisp
AutoLISP: ASCII text
AutoLisp: ASCII text, with very long lines
$ cat AutoLISP
#REDIRECT AutoLisp
$ cat AutoLisp
AutoLisp is the API for the proprietary computer-aided design system, !AutoCAD. [snip]

要在 Mac 上正确、轻松地检查这一点,您需要在区分大小写的文件系统中工作。参见,例如,我对 How do I change case of the names of multiple files, already committed?

的回答