您的位置 首页 > 数码极客

git如何添加权限 git如何添加文件

在开发中,经常会使用git来做版本管理,我们主要是用来管理文件的内容,今天首次发现git还可以记录文件的权限修改,特地记录下。

比如,如下这个文件,没有修改前权限是644:

$ ll -rw-r--r-- 1 staff staff 932B Jan 13 11:01 web

现在,我们修改成755:

$ chmod 755 web -rwxr-xr-x 1 staff staff 932B Jan 13 11:01 web

查看git记录,里面已经记录了:

$ git status On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: .idea # 该文件已经被修改 modified: web no changes added to commit (use "git add" and/or "git commit -a")

通过diff看看修改内容:

$ git diff web # 内容 diff --git a/web b/web old mode 100644 # 原来644 new mode 100755 # 现在755 (END)

644和755最大的区别就是多了一个可执行权限:

rw- r-- r-- 644 rwx r-x r-x 755

我们再来试着修改成其他不涉及可执行的权限,先把修改的文件撤销:

git restore web

我再设置成666:

$ chmod 666 web $ ll web -rw-rw-rw- 1 staff staff 932B Jan 13 16:06 web

查看git有没有记录:

$ git status On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: .idea no changes added to commit (use "git add" and/or "git commit -a")

发现是没有记录的,接着我又试了其他权限,比如655,654,仍然是不会记录。

通过以上的实验发现,git中只记录对于当前用户的可执行权限的记录,比如当前用户原来没有执行权限,添加执行权限后,git就会记录,撤销执行权限也会记录,但对于当前用户组或其他用户是不会记录的。

这就导致我们在拷贝文件过程中,会发现一个没有修改的文件也被git标记成unstaged file,原因可能就是权限被修改造成的,同时,由于Linux/Mac和Windows中,文件的权限是有差别的,互相复制拷贝也会出现这种情况。所以可以的话还是建议关闭这个功能。

这个功能是默认开启的,可以手动关闭这个功能:

git config --local core.fileMode false

--local只针对当前项目,如果需要全局,可以替换成--global,使用如下命令可以查看当前模式:

git config --get --local core.filemode

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“git如何添加权限,git如何添加文件,git如何添加用户,git如何添加成员,git添加用户并规定权限”边界阅读