防止权限修改文件在 git 上被修改
prevent permission modified files from being modified on git
我已经把一个文件在本地分支的权限改成了rw-r--r--但是推送到云端后还是可以修改,有什么办法吗为了防止这种情况?
我猜你的意思是:
- 您想使文件只能由您(所有者)写入
- 您想将这些具有权限的文件完整地推送到远程(例如 Bitbucket Cloud 或 GitHub)
- 您希望阻止克隆 存储库的其他用户对这些文件进行更改,因为您最初将它们设置为只能由文件所有者编辑,这最初是你.
这里有两个问题。
- Git 不会保留您设置的所有权限更改。它只识别您是否使特定文件可执行。在 git 存储库中,文件通常只有以下一组权限:
644
(所有者可以读 + 写;group/everyone 只能读)或 755
(所有者可以读取、写入和执行;group/everyone 只能读取和执行)。您不能施加进一步的权限限制,因为 git 根本不会存储它们或将它们推送到远程 git 主机
- 当我作为用户克隆存储库时,所有文件都是由我的本地用户帐户创建的,现在 我 是这些文件的所有者。即使 git 跟踪了这些权限,它 仍然 不起作用,因为克隆了存储库的人拥有这些文件的本地副本。
在我看来,您真正想要做的是防止用户更改远程存储库中的某些文件。根据存储库主机,您应该能够实现某种 git 预接收钩子来拒绝推送。在此处了解更多关于您的 git 托管服务可以支持的内容,您应该能够实施解决此问题的方法。
我已经把一个文件在本地分支的权限改成了rw-r--r--但是推送到云端后还是可以修改,有什么办法吗为了防止这种情况?
我猜你的意思是:
- 您想使文件只能由您(所有者)写入
- 您想将这些具有权限的文件完整地推送到远程(例如 Bitbucket Cloud 或 GitHub)
- 您希望阻止克隆 存储库的其他用户对这些文件进行更改,因为您最初将它们设置为只能由文件所有者编辑,这最初是你.
这里有两个问题。
- Git 不会保留您设置的所有权限更改。它只识别您是否使特定文件可执行。在 git 存储库中,文件通常只有以下一组权限:
644
(所有者可以读 + 写;group/everyone 只能读)或755
(所有者可以读取、写入和执行;group/everyone 只能读取和执行)。您不能施加进一步的权限限制,因为 git 根本不会存储它们或将它们推送到远程 git 主机 - 当我作为用户克隆存储库时,所有文件都是由我的本地用户帐户创建的,现在 我 是这些文件的所有者。即使 git 跟踪了这些权限,它 仍然 不起作用,因为克隆了存储库的人拥有这些文件的本地副本。
在我看来,您真正想要做的是防止用户更改远程存储库中的某些文件。根据存储库主机,您应该能够实现某种 git 预接收钩子来拒绝推送。在此处了解更多关于您的 git 托管服务可以支持的内容,您应该能够实施解决此问题的方法。