解決因文件權(quán)限導(dǎo)致git fetch命令執(zhí)行失敗的問(wèn)題
前言
最近在一個(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ì)腳本之家的支持。
相關(guān)文章
centos 5.1下的安全設(shè)置(適合所有的linux版本)
因?yàn)閞oot用戶對(duì)系統(tǒng)具有全權(quán)的操作權(quán)限,為了避免一些失誤的操作,建議在一般情況下,以一般用戶登錄系統(tǒng),必要的時(shí)候需要root操作權(quán)限時(shí),再通過(guò)“su -”命令來(lái)登錄為root用戶進(jìn)行操作。2010-03-03
在Ubuntu中實(shí)現(xiàn)人臉識(shí)別登錄的完整步驟
這篇文章主要給大家介紹了關(guān)于在Ubuntu中實(shí)現(xiàn)人臉識(shí)別登錄的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Deepin系統(tǒng)中g(shù)rub配置的說(shuō)明和修改方式
GRUB是一種多操作系統(tǒng)啟動(dòng)程序,主配置文件位于/boot/grub/grub.cfg,但通常通過(guò)編輯/etc/default/grub文件來(lái)修改配置,該文件允許用戶設(shè)置默認(rèn)啟動(dòng)操作系統(tǒng)、啟動(dòng)超時(shí)時(shí)間等,修改后需運(yùn)行特定命令更新配置2024-09-09
Apache NameVirtualHost *:80 has no VirtualHosts問(wèn)題解決辦法
這篇文章主要介紹了Apache NameVirtualHost *:80 has no VirtualHosts問(wèn)題解決辦法,一個(gè)很簡(jiǎn)單的配置性錯(cuò)誤,需要的朋友可以參考下2014-08-08
如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況
這篇文章主要給大家介紹了關(guān)于如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
深入解讀Linux進(jìn)程函數(shù)fork(),vfork(),execX()
這篇文章主要介紹了深入解讀Linux進(jìn)程函數(shù)fork(),vfork(),execX(),分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
linux獲取進(jìn)程執(zhí)行時(shí)間方法示例
linux獲取進(jìn)程執(zhí)行時(shí)間有兩種方法可以獲取,第一種是用time命令,time 進(jìn)程。第二種是通過(guò)在程序中進(jìn)行記錄,首先利用sysconf函數(shù)獲取時(shí)鐘滴答數(shù),再用times獲取tms結(jié)構(gòu),詳細(xì)看下面的示例代碼2013-12-12
Linux實(shí)現(xiàn)數(shù)據(jù)庫(kù)定時(shí)備份方式
這篇文章主要介紹了Linux實(shí)現(xiàn)數(shù)據(jù)庫(kù)定時(shí)備份方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

