git如何处理文件夹权限?

Posted

技术标签:

【中文标题】git如何处理文件夹权限?【英文标题】:How does git handle folder permission? 【发布时间】:2010-11-07 11:02:17 【问题描述】:

我正在使用 git 版本 1.5.6.3,似乎 git 没有注意到文件夹的模式更改

#create a test repository with a folder with 777 mode
:~$ mkdir -p test/folder
:~$ touch test/folder/dummy.txt
:~$ cd test
:~/test$ chmod 777 folder/

#init git repository
:~/test$ git init
Initialized empty Git repository in ~/test/.git/
:~/test$ git add .
:~/test$ git commit -m 'commit a directory'
Created initial commit 9b6b21a: commit a directory
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 folder/dummy.txt

#change folder permission to 744
:~/test$ chmod 744 folder/
:~/test$ git status 
# On branch master
nothing to commit (working directory clean)

04000 代表什么?

:~/test$ git ls-tree HEAD folder
040000 tree 726c1d5f0155771348ea2daee6239791f1cd7731    folder

这是正常行为吗?

如何跟踪文件夹模式的变化?

【问题讨论】:

相关:***.com/questions/737673/… 【参考方案1】:

git 跟踪的唯一“权限”位是文件的可执行位,其余的模式位描述每个 git 树中的对象是什么类型的文件系统对象。 git 支持文件和符号链接(blob)、目录(树)和子模块(提交)。

git 旨在帮助跟踪不同机器上的源代码。权限位取决于机器之间的用户和组映射。在不存在这些映射的分布式环境中,跟踪权限位通常最终会阻碍而不是帮助任何事情。

如果您需要跟踪 git 原生跟踪的更多文件系统属性,您可以考虑使用扩展工具,例如 etckeeper。

【讨论】:

这不完全准确(不再)。见***.com/questions/40978921/… git 现在跟踪 文件 上的 755 和 644(可执行与否),而不是文件夹。

以上是关于git如何处理文件夹权限?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 git 存储库上正确使用组文件权限?

git checkout 切换分支 文件无编辑权限

git status 未显示权限更改 [重复]

在 Windows 7 上使用 git-bash 更新文件权限

如何请求提交到开源 git 存储库的权限? [复制]

防止 Git 在拉取时更改权限