1.git push 出现错误:
lidq@server:~/1_prouhd_git/prouhd/UHD$ git push
Counting objects: 8, done.
Delta compression using up to 20 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 693 bytes | 693.00 KiB/s, done.
Total 8 (delta 5), reused 0 (delta 0)
error: remote unpack failed: unable to create temporary object directory
To /home/git/prouhd.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to '/home/git/prouhd.git'
从上边的报错可知,可能是远程git仓库权限的问题。在git 的远程仓库中,没有项目源码,只做版本控制。本地代码推送到远程,远程进行版本更新时,没有对部分文件操作的权限。
1.1 猜测此问题原因是:
本地部分代码属主属组被误修改(root),代码提交到远端(正常情况下是提交不上去的,除非使用root权限上传)。最终修改了远程代码仓库中的文件权限。
1.2 解决此问题的方法是:
(1) 切换到git用户,进入远程git仓库目录中:
su git
cd ~/project.git/
(2)修改目录权限和代码属主:
sudo chmod -R 777 ./
sudo chown -vR git *
此时,试一下应该可以push 了。
如果可以git push,但又发现新的错误:
To /home/git/prouhd.git
ecf46a26b..ec53ef411 master -> master
error: update_ref failed for ref 'refs/remotes/origin/master': cannot update the ref 'refs/remotes/origin/master': unable to append to '.git/logs/refs/remotes/origin/master': Permission denied
说明本地master分支权限有问题:
sudo chown user:user -R .git/logs/refs/remotes/origin
2.git pull 发现冲突
对冲突文件进行add commit 操作。重新git pull。