1. 程式人生 > >git push error unable to create temporary sha1 filename

git push error unable to create temporary sha1 filename

問題描述

今天push程式碼  發現git報錯如下

unable to create temporary sha1 filename!

網上找了下  發現幾乎沒有這個問題 有幾個相似的問題 有的說版本庫xxx.git許可權不對  登陸到伺服器上

排查過程

[xxx@xxx xxx]# ll | grep xxx.git

drwxr-xr-x  7 git git 4096 11月  1 19:00 xxx.git

發現許可權沒有問題  git使用者  755許可權 沒有問題   然後我就覺得這不是一個簡單的問題 

請繫好安全帶  老司機要轉彎了  非正常問題要用非正常思維來考慮  果然

[xxx@xxx xxx]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G   19G  23M  100% /
tmpfs           1.9G     0  1.9G   0% /dev/shm 

磁碟滿了 shit!

常見情況及解決辦法

感謝同學的提醒   斷電造成的磁碟鎖定也會造成這種問題

在這裡總結一下    git類似unable to write/create的錯誤 基本上都是git伺服器的寫入問題 目前已知的情況如下

1.伺服器磁碟寫滿 導致無法寫入     解決辦法 清理磁碟分割槽

2.系統沒有正常關機導致虛擬磁碟出現檔案系統錯誤   可能只是一個分割槽也節能整個檔案系統被鎖定  在server上 mkdir會提示 Read-only file system!等提示 解決辦法

檢視下磁碟狀態

[xxx@xxx ~]#  fdisk -l 

Disk /dev/vda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078f9c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        5222    41940992   83  Linux

Disk /dev/vdb: 107.4 GB, 107374182400 bytes
255 heads, 56 sectors/track, 14685 cylinders
Units = cylinders of 14280 * 512 = 7311360 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf0ba90c3

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1       14685   104850872   83  Linux

檢視檔案系統型別

[xxx@xxx ~]# mount
/dev/vda1 on / type ext4 (rw,barrier=0)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

修復

重啟系統後使用root進入單使用者模式,執行

fsck.ext3 -y /dev/vda3

   注意  ext3的檔案系統使用fsck.ext3修復 ext4檔案系統使用fsck.etx4修復 修復過程有時候會比較長

3.最常見的情況的 也就是版本庫沒有寫入許可權  ll | grep xxx.git  檢查下許可權

[xxx@xxx xxx]# ll | grep xxx.git

drwxr-xr-x  7 git git 4096 11月  1 19:00 xxx.git

首先 目錄使用者及使用者組為git  其次 755許可權  如與上述不一樣請執行

chown -R git.git xxx.git/
chmod -R 755 xxx.git/ 

如果幫到你  麻煩在下面留個言  如果我描寫的情況跟你的有所不同 麻煩留言告知我一下 我會幫助你解決並完善本為以幫助更多人