git pull ok,git push 提示权限不对无法提交的问题

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。

你可能感兴趣的:(工具使用)