Git 推送和拉取文件权限更改

Git push & pull file permission changes

我的生产服务器上有一个项目 linux1

  1. 我使用 Windows FileZilla 将项目从 linux1 复制到我的 Windows PC。
  2. 然后我使用 Windows Filezilla 从我的 Windows PC 将它复制到我的测试服务器 linux2
  3. linux2 测试服务器上,我对文件进行了一些文件权限更改,还更改了一些代码。
  4. 然后我使用 Windows FileZilla 将项目从 linux2 测试服务器复制回我的 Windows PC。

如果我现在将项目从我的 Windows PC 推送到我的 Git 存储库,然后如果我将项目拉到我的生产 linux1 服务器上,文件权限是否会linux1改变?或者这只会更新代码?

Git 只跟踪一个权限:可执行位。所有文件都存储为 644(所有者 rw-、组和其他 r--)或 755(所有者 rwx、组和其他 r-x)。

当您 pull 在您的生产服务器上时,文件的可执行位将根据它们的提交方式进行更新。不跟踪其他权限和文件所有权。执行 pulling 的用户需要修改本地文件系统上的文件的权限,并且可能成为任何已修改文件的所有者。

如果您需要进一步控制权限,您可以 运行 脚本。或者,使用对文件权限具有更强大控制的部署工具(这不是 Git 设计的目的)。

附带说明一下,在您的登台服务器上使用 git clone / fetch / pull 而不是通过您的 Windows PC 可能会更简单.