这与我最近提出的一个问题有关存储非裸库以便在计算机之间轻松移动, 因此阅读该问题可以有助于了解背景。
要点是fileMode
会对一些文件报告差异。我找不到一种一致性地复现它的方法,但它经常发生。 我注意到这个文件在两台机器上都具有644权限,但在其中一台机器上报告755的差异。 这让我想起Git认为可执行位已设置,但我无法弄清楚是否可以实际“看到”Git如何设置该位。
这与我最近提出的一个问题有关存储非裸库以便在计算机之间轻松移动, 因此阅读该问题可以有助于了解背景。
要点是fileMode
会对一些文件报告差异。我找不到一种一致性地复现它的方法,但它经常发生。 我注意到这个文件在两台机器上都具有644权限,但在其中一台机器上报告755的差异。 这让我想起Git认为可执行位已设置,但我无法弄清楚是否可以实际“看到”Git如何设置该位。
要查看git对提交和索引中的文件的实际状态,可以分别使用 git ls-tree <tree>
和 git ls-files -s <path>
命令。
顺便提一下,似乎git只查看可执行位,并假定其他所有情况都是644
。如果想尝试调试此奇怪问题,请参考cache.h文件中的create_ce_mode函数。
$ gitk path/to/repository/file
...
------------------------------- path/to/repository/file -------------------------
index a5e14048..08ce8948 100644
...
100644
,文件权限是644
。
644
,但提交中的文件有时为755
?git ls-tree
或git ls-files -s
显示什么?这将告诉您git记录的数字。 - Josh Leegit ls-files
是显示可执行位状态的答案。如果你把你的评论改成一个答案,我会标记它。 - Rob Wilkerson