这与我最近询问的另一个问题有关,即在 Dropbox 中存储非裸存储库以便在计算机之间轻松移动,因此阅读该问题的背景可能会有所帮助。
要点是fileMode
不断报告一些文件的差异。我找不到始终如一地重现它的方法,但它经常发生。我注意到的是,在两台机器上都有 644 权限的文件通常会在其中一台机器上报告与 755 的差异。这让我认为 Git 相信可执行位已设置,但我无法弄清楚我是否真的可以看到Git 是如何设置该位的。
这与我最近询问的另一个问题有关,即在 Dropbox 中存储非裸存储库以便在计算机之间轻松移动,因此阅读该问题的背景可能会有所帮助。
要点是fileMode
不断报告一些文件的差异。我找不到始终如一地重现它的方法,但它经常发生。我注意到的是,在两台机器上都有 644 权限的文件通常会在其中一台机器上报告与 755 的差异。这让我认为 Git 相信可执行位已设置,但我无法弄清楚我是否真的可以看到Git 是如何设置该位的。
要查看 git 在提交和索引中对文件的实际看法,请分别使用git ls-tree <tree>
和git ls-files -s <path>
。
顺便说一句,git 似乎只查看可执行位,并假设644
其他所有内容。如果您想尝试调试这个奇怪的问题,请查看cache.h 中的 create_ce_mode 。
使用gitk如下
$ gitk path/to/repository/file
在打开的窗口中,在虚线下您可以看到六个数字。最后三个是文件权限。
...
------------------------------- path/to/repository/file -------------------------
index a5e14048..08ce8948 100644
...
在上面的例子中,6位数字是100644
,文件权限是644