更新:I确认导致此问题的确实是文件权限。由于安全原因,我的主机安装了suPHP,如果没有正确的权限设置(文件夹上设置755,文件上设置644 ),则会导致500个错误。
不幸的是,有了这些权限,我无法通过git将更改推送到文件夹。
尝试使用权限,以使我仍然可以安全的同时,也能够部署使用git。
======================================
以下是原来的问题:
======================================
我有一个非裸的远程存储库,在本地工作之后,我将更改推送到该存储库。
我的本地机器有Ubuntu 14,我的远程服务器有分操作系统。两者都在使用Git版本1.9.1。
由于以下原因,我能够推送到远程存储库的主分支:
git config receive.denyCurrentBranch ignore
以下内容保存在“..git/hooks/”中
GIT_WORK_TREE=../ git checkout -f
并且它是可执行的(chmod +x)。
最近,在尝试执行"git push dev master“之后,似乎没有任何问题,因为它将成功地推送。
当我SSH进入远程存储库并执行"git日志“时,它将显示我的最新提交列表。但是,在检查文件时,不存在更改。
当输入"git分支“时,我看到我目前在主分支上(输入"git签出主分支”确认我已经在主分支上)。
查看更改的唯一方法是查看最近提交的git日志,然后键入"git签出提交ID“。
这样做会显示更改,但我的权限会改变,我被迫使用bash脚本将权限更改为所需的权限。
如何防止这一问题的发生?
发布于 2016-08-01 16:21:06
以下是我的发现:
1.)文件权限是在"git推送“之后未成功进行更改的原因。我对文件权限进行了更改(改为664),而不是644,更改可以被推送。
2.)文件权限将在git推送后更改。我试图将我的index.php文件保持在644,以防止服务器上发生500个错误,但是在任何"git推送“之后(不管我是否编辑了index.php文件),它将自动更改为664权限。
3.)将"umask 022“添加到我的后接收文件中,修复了这个问题,我现在能够成功地将正确的权限保留到我的远程存储库。
以下答案帮助我解决了这个问题:Git change default umask when update file
对于那些不懂umask的人,本文向我解释得很好:http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
https://stackoverflow.com/questions/38601212
复制相似问题