因此,这似乎是一个常见的问题,并且有很多临时解决方案,但我想了解为什么git通常是这样构建的。
问题:我克隆一个文件权限设置不同的存储库,立即git状态显示我的大量文件已经“更改”,由于权限不同。正如我所提到的,我不是在寻找临时修复或更改我默认的Linux权限方式,而是想了解为什么Git会这样做以及问题的潜在根源在哪里。
例如,对于我尚未提交的任何其他更改,我可以执行git checkout来还原更改,但是当我执行此操作时,它对文件的权限没有任何更改。如果Git实际上正在跟踪我的权限并将权限更改视为文件更改,那么为什么我不能执行git checkout以便恢复最初的权限?如果Git正在跟踪权限,除了使我能够更改我的权限并使克隆或fork我的存储库的其他人创建具有相同权限的文件外,还有什么目的?
我猜我的问题归结为:如果Git将权限更改视为文件更改进行跟踪,为什么Git不让我使用任何用于确保我的项目与其他合作者的权限一致的常规命令,就像它处理内容一样?为什么我需要通过临时修补程序避免每次提交的人具有不同的默认文件权限设置时填充我的存储库与文件权限更改提交?如果这是一个生产项目,我们该怎么办才能使权限更改提交实际进入项目?例如,假设我们想限制一个文件,以便只有组可以在生产中读取它,为什么开发人员不能进行此更改并像履行项目的任何其他要求一样提交/推送/拉取请求?顺便说一下,这都是在Linux上进行的,因此我不讨论从不同文件系统提交。
问题:我克隆一个文件权限设置不同的存储库,立即git状态显示我的大量文件已经“更改”,由于权限不同。正如我所提到的,我不是在寻找临时修复或更改我默认的Linux权限方式,而是想了解为什么Git会这样做以及问题的潜在根源在哪里。
例如,对于我尚未提交的任何其他更改,我可以执行git checkout来还原更改,但是当我执行此操作时,它对文件的权限没有任何更改。如果Git实际上正在跟踪我的权限并将权限更改视为文件更改,那么为什么我不能执行git checkout以便恢复最初的权限?如果Git正在跟踪权限,除了使我能够更改我的权限并使克隆或fork我的存储库的其他人创建具有相同权限的文件外,还有什么目的?
我猜我的问题归结为:如果Git将权限更改视为文件更改进行跟踪,为什么Git不让我使用任何用于确保我的项目与其他合作者的权限一致的常规命令,就像它处理内容一样?为什么我需要通过临时修补程序避免每次提交的人具有不同的默认文件权限设置时填充我的存储库与文件权限更改提交?如果这是一个生产项目,我们该怎么办才能使权限更改提交实际进入项目?例如,假设我们想限制一个文件,以便只有组可以在生产中读取它,为什么开发人员不能进行此更改并像履行项目的任何其他要求一样提交/推送/拉取请求?顺便说一下,这都是在Linux上进行的,因此我不讨论从不同文件系统提交。