2016-07-26 56 views
1

更新:我确认它确实是导致此问题发生的文件权限。我的主机安装了suPHP,出于安全原因,如果我没有设置适当的权限(文件夹755,文件644),会导致500错误。Git推送和结账更改权限后更改不显示

不幸的是,有了这些权限,我无法通过git将更改推送到该文件夹​​。

试图使用权限,以便我仍然可以安全,同时也可以使用git进行部署。

======================================

以下是原始问题:

======================================

我有一个非裸露的远程存储库,我在本地工作后推送更改。

我的本地机器有Ubuntu 14,而我的远程服务器有Cent OS。两者都使用Git版本1.9.1。

我是能推到远程存储库的主分支由于以下:

git config receive.denyCurrentBranch ignore 

以下保存在“git的/挂钩/后收到”

GIT_WORK_TREE=../ git checkout -f 

它是可执行的(chmod + x)。

最近,试图做一个“git push dev master”后,似乎没有问题,因为它会成功推送。

当我SSH进入远程存储库并执行“git log”时,它显示我列出的最新提交。但是,在检查文件时,更改不存在。当我输入“git branch”时,我看到我目前在Master分支上(键入“git checkout master”确认我已经在master分支上了)。

我看到更改的唯一方法是在git日志中查找最近的提交,然后键入“git checkout [commit ID]”。

这样做会使更改显示出来,但是我的权限会更改,我不得不使用bash脚本将权限更改为所需的权限。

可以做些什么来防止这个问题的发生?

+0

你确定你提交到正确的分支? –

+0

Hi @TimBiegeleisen。感谢您的答复。是的,我在本地输入“git checkout master”以确保在提交之前我在主分支上。它提醒我,我已经在Master分支上了。 – AndrewMRiv

回答

0

这里是我的新发现:

1)文件权限被改动的原因是不是“混帐推”后被成功地进行了。 我对文件权限进行了更改(而不是644),并且可以推送更改。

2.)git push后文件权限会改变。 我试图让我的index.php文件保持在644,以防止服务器发生500错误,但是在任何“git push”(无论我是否编辑index.php文件)后,它都会自动更改到664权限。

3.)将“umask 022”添加到我的post-receive文件中修复该问题 我现在可以成功地将我的远程存储库推送到保留正确权限的远程存储库。

以下的答案必须帮我解决这个问题: Git change default umask when update file

对于那些不明白的umask,本文就向我解释说得好: http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html