前言
最近在一個(gè)基于 git 的發(fā)布系統(tǒng)中拉取代碼,發(fā)現(xiàn)無(wú)法拉取最新的提交記錄,通過(guò)調(diào)試和查看日志文件找到一行錯(cuò)誤:error: cannot open .git/FETCH_HEAD: Permission denied
,原因是文件權(quán)限問(wèn)題導(dǎo)致。
問(wèn)題原因
Permission denied,應(yīng)該權(quán)限問(wèn)題,到項(xiàng)目 .git 目錄下查看文件的用戶和組:
發(fā)現(xiàn) FETCH_HEAD 的用戶和組都是 root 權(quán)限,而發(fā)布系統(tǒng)的運(yùn)行進(jìn)程是 nobody 用戶,所以沒(méi)有權(quán)限執(zhí)行這個(gè) git 命令:git fetch -q –all
解決辦法
于是使用 chown 把該文件用戶和組權(quán)限都改成 nobody,再試就正常了。
排查問(wèn)題
更新分支執(zhí)行的 git 命令如下:
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
最后發(fā)現(xiàn)是其中 git fetch -q –all
出現(xiàn)權(quán)限錯(cuò)誤,這種多個(gè)命令 && 組合的形式即使中間命令報(bào)錯(cuò)了,整體執(zhí)行報(bào)錯(cuò)也不會(huì)輸出錯(cuò)誤,所以日志一開(kāi)始并沒(méi)有提示有什么錯(cuò)誤,后來(lái)把多個(gè)命令從第一個(gè)命令開(kāi)始執(zhí)行,再一個(gè)個(gè)加后面的命令,才定位到問(wèn)題。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選