解決因文件權(quán)限導(dǎo)致git fetch命令執(zhí)行失敗的問題
前言
最近在一個(gè)基于 git 的發(fā)布系統(tǒng)中拉取代碼,發(fā)現(xiàn)無法拉取最新的提交記錄,通過調(diào)試和查看日志文件找到一行錯(cuò)誤:error: cannot open .git/FETCH_HEAD: Permission denied
,原因是文件權(quán)限問題導(dǎo)致。
問題原因
Permission denied,應(yīng)該權(quán)限問題,到項(xiàng)目 .git 目錄下查看文件的用戶和組:
發(fā)現(xiàn) FETCH_HEAD 的用戶和組都是 root 權(quán)限,而發(fā)布系統(tǒng)的運(yùn)行進(jìn)程是 nobody 用戶,所以沒有權(quán)限執(zhí)行這個(gè) git 命令:git fetch -q –all
解決辦法
于是使用 chown 把該文件用戶和組權(quán)限都改成 nobody,再試就正常了。
排查問題
更新分支執(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ò)也不會輸出錯(cuò)誤,所以日志一開始并沒有提示有什么錯(cuò)誤,后來把多個(gè)命令從第一個(gè)命令開始執(zhí)行,再一個(gè)個(gè)加后面的命令,才定位到問題。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
linux服務(wù)器系統(tǒng)CentOS、uBuntu、Gentoo、FreeBSD、Debian的比較
最近一直都是在玩ubuntu的,但是做web服務(wù)器的CentOS還是經(jīng)常被用到,自己也糊涂了2012-12-12