2016-07-26 1 views
1

UPDATE:は、私はそれが実際にこの問題が発生する原因となったファイルの権限であることを確認しました。私のホストにはセキュリティ上の理由からsuPHPがインストールされています。これは、適切なアクセス権が設定されていないと、500エラーが発生します(フォルダ755、ファイル644)。変更は、Gitのプッシュした後、表示及びませんチェックアウトの変更権限

これらの権限では、gitを使用してフォルダへの変更をプッシュできません。

私はまだgitでデプロイできるようにしながら、セキュリティを確保できるようにアクセス権を使って作業しようとしています。以下は

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

はオリジナルです質問:

======================================私が持っている

私がローカルで作業した後に変更をプッシュする非裸のリモートリポジトリ。

ローカルマシンにはUbuntu 14があり、リモートサーバーにはCent OSがあります。どちらもGitバージョン1.9.1を使用しています。

私が原因以下にリモートリポジトリのmasterブランチにプッシュすることができた:

git config receive.denyCurrentBranch ignore 

「.git /フック/ポスト受信」

GIT_WORK_TREE=../ git checkout -f 

そして、それに保存された以下の実行可能です(chmod + x)。

最近、「Gitのプッシュのdevのマスター」を実行しようとした後、成功したプッシュしますので、問題がないことが表示されます。

私はリモートリポジトリにSSHで「git log」を実行すると、私の最新のコミットが表示されます。ただし、ファイルを調べるとき、変更は存在しません。 「gitのブランチ」を入力するとき

は、私が(「gitのチェックアウトのマスターは、」私はマスターブランチにすでにあったことを確認して入力する)masterブランチ上で、現在だと見ます。

私は変更を確認するための唯一の方法は、最新のコミットのためのGitのログで見て、その後、入力することです「Gitのチェックアウトは、[IDをコミット]。」これを行う

は変化が現れるが、私の権限が変更と私が必要とされるものにアクセス権を変更するにはbashスクリプトを使用するように強制しています。

この問題が発生しないようにするにはどうすればよいですか?ここで

+0

は、あなたが正しいブランチにコミットか? –

+0

こんにちは@TimBiegeleisen。ご回答いただきありがとうございます。はい、ローカルに私は "git checkout master"とタイプして、コミットする前に私がマスターブランチにいたことを確認しました。私はすでにMasterブランチにいたことを思い出しました。 – AndrewMRiv

答えて

0

私が作った発見されています

1)ファイルのパーミッションは変更が正常「Gitのプッシュ」の後に行われていなかった理由でした。 644ではなくファイルのアクセス許可(代わりに664)を変更し、変更をプッシュすることができました。

2.)git pushの後にファイルのアクセス権が変更されます。 私はindex.phpファイルを644に保存しようとしていましたが、サーバーで500エラーが発生するのを防ぐために、 "git push"(index.phpファイルを編集したかどうかに関わらず)の後に自動的に変更されます664のパーミッション。

3)ポスト受信ファイルに "umask 022"を追加すると、この問題は解決されました。 正しい権限を保持してリモートリポジトリにプッシュできるようになりました。

以下の答えは、私はこの問題を解決する助け:umaskのを理解していないものについては Git change default umask when update file

を、この記事ではよく私にそれを説明した: http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html

関連する問題