文件所有权不会留在git branch change

时间:2016-02-26 01:18:42

标签: linux git version-control permissions

好的,我有一个奇怪的问题。

我有一个包含多个文件的git项目。我意外地创建,添加并提交了一个以root用户作为文件所有者的文件,而不是我已经设置为项目其余部分所有者的用户。我合并了这个文件,以便它既可以在我的主分支中,也可以在我的dev分支中。在两个分支中,它读取root是该文件的所有者。

因此,在检查了我的主分支后,我运行chown user:user file.txt将文件设置为项目其余部分的普通用户。执行ls -l后,我看到该文件现在显示“user”现在是所有者和组。太好了!

现在,如果我去检查dev分支并运行ls -l,它会再次显示该文件由root拥有。如果我再次检出主分支,它现在显示文件所有者已更改回为root用户而不是“user”。

我尝试了很多东西,但每次我检查出包含该文件的分支时,无论我多么努力地将其设置为“用户”,用户总是设置为“root”。

我做错了吗? git不应该存储文件的所有者,但它似乎忽略了我的所有权更改。

感谢。

2 个答案:

答案 0 :(得分:0)

除非你自己[1],否则无法创建root拥有的文件。这是一个基本的安全问题,甚至早于Linux。

在使用git存储库时停止使用root用户标识,问题就会消失。

在整个git存储库上执行recursive chown -R。然后在以正确用户身份登录时始终执行git命令。

[1]是的,如果您对目录具有写入权限,则可以重命名根拥有的文件。但是当检出文件时,git不会这样做。

答案 1 :(得分:0)

事实证明,我必须将提交推送到远程存储库以保持所有权更改。不知道为什么会这样。是的,我知道不要使用root用户等等。这是一个愚蠢的小错误,我试图解决这个问题。