当多人推/拉时 Git 权限正在改变
Posted
技术标签:
【中文标题】当多人推/拉时 Git 权限正在改变【英文标题】:Git permissions are changing when multiple people push/pull 【发布时间】:2016-07-27 10:37:55 【问题描述】:我有一个 git 存储库,当我在我的存储库中本地创建文件时,权限设置为 -rw-r--r--
。
当我推送这些更改并且另一个开发人员将这些更改拉下来时,这个文件现在拥有他的权限-rwxr-xr-x
。
反之亦然,他创建了一个权限设置为 -rw-r--r--
的文件并推送到我们的 git 存储库,然后我拉取更改,权限现在为 -rwxr-xr-x
。
这是什么原因造成的,我该如何解决这个问题,以便在一个开发者推送时无论权限是什么,在下一个开发者拉取时都将应用这些相同的权限?
如果重要的话,我们会在 TFS 中使用 Git。
【问题讨论】:
【参考方案1】:在关于 ServerFault 的类似问题中 (link) 用户 harrymc 和 boldewyn 指出,有一些文件系统被 git 团队认为“损坏”。
那些文件系统的可执行位有问题。 对于那些您必须忽略文件权限更改才能使其工作的人:
git config core.filemode false
这不会改变已经存储在服务器上的文件权限。因此,在更改文件模式设置后,您可能需要检查在您checkout
分支之后权限是如何到达的。
【讨论】:
【参考方案2】:除了git config core.filemode false
,你还可以在git index中设置或取消设置可执行位,确保git内部会记录正确的权限:
例如:
find . -name '*.sh' | xargs git update-index --chmod=+x
你的情况
xargs git update-index --chmod=_x -- myFile
【讨论】:
以上是关于当多人推/拉时 Git 权限正在改变的主要内容,如果未能解决你的问题,请参考以下文章
无法将 master 推送到 Github -“origin”似乎不是 git 存储库/权限被拒绝