前言
最近在一個基于 git 的發布系統中拉取代碼,發現無法拉取最新的提交記錄,通過調試和查看日志文件找到一行錯誤:error: cannot open .git/FETCH_HEAD: Permission denied
,原因是文件權限問題導致。
問題原因
Permission denied,應該權限問題,到項目 .git 目錄下查看文件的用戶和組:
發現 FETCH_HEAD 的用戶和組都是 root 權限,而發布系統的運行進程是 nobody 用戶,所以沒有權限執行這個 git 命令:git fetch -q –all
解決辦法
于是使用 chown 把該文件用戶和組權限都改成 nobody,再試就正常了。
排查問題
更新分支執行的 git 命令如下:
1
|
cd /data/vhosts/project && git checkout -q master && git fetch -q –all && git/bin/git clean -fd && git/bin/git reset -q –hard origin/master |
最后發現是其中 git fetch -q –all
出現權限錯誤,這種多個命令 && 組合的形式即使中間命令報錯了,整體執行報錯也不會輸出錯誤,所以日志一開始并沒有提示有什么錯誤,后來把多個命令從第一個命令開始執行,再一個個加后面的命令,才定位到問題。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:https://blog.tanteng.me/2017/02/git-fetch-permission-denied/