【问题标题】:file ownership doesn't stay on git branch change文件所有权不会停留在 git 分支更改上
【发布时间】:2016-06-09 01:46:22
【问题描述】:

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

我有一个包含多个文件的 git 项目。我意外地创建、添加和提交了一个文件,其中 root 用户作为文件所有者,而不是我设置为项目其余部分所有者的用户。我合并了这个文件,这样它就在我的主分支和我的开发分支中。在两个分支中,它读取 root 是该文件的所有者。

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

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

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

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

谢谢。

【问题讨论】:

    标签: linux git version-control permissions


    【解决方案1】:

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

    【讨论】:

    • 你没有看到你认为你看到的。 git 所做的一切都是在用户运行 git 时完成的。如果 git 创建了一个 root 拥有的文件,则 git 以 root 身份运行。 Git 不会跟踪任何超出可执行状态的安全数据;那,它将在结帐时恢复。其他一切都设置为操作系统默认值。
    • 是的,我终于想通了。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 是的,很明显。当我不应该使用root用户时,我不小心使用了。我试图修复这个错误。因此我的帖子。没必要做义。我试图完全按照您提到的那样做,但是每次我签出一个分支时,所有者都会恢复为 root。因此我的问题。我在下面发布了答案。我只需要推送一个提交以使更改生效。
    猜你喜欢
    • 2014-07-18
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2013-02-11
    • 1970-01-01
    相关资源
    最近更新 更多