Error pushing to GitHub - insufficient permission for adding an object to repository database

后端 未结 21 2122
孤街浪徒
孤街浪徒 2020-11-27 09:34

I\'m getting back an unusual error while trying to do a \"git push\" to my GitHub repository:

Counting objects: 8, done.
Delta compression using 2 threads.
Compre         


        
相关标签:
21条回答
  • 2020-11-27 09:41

    chmod should be chown, so the correct line is:

    sudo chown -R gituser:gituser objects
    
    0 讨论(0)
  • 2020-11-27 09:43

    Check the repository: $ git remote -v

    origin  ssh://git@example.com:2283/srv/git/repo.git (fetch)
    origin  ssh://git@example.com:2283/srv/git/repo.git (push)
    

    Note that there is a 'git@' substring here, it instructs git to authenticate as username 'git' on the remote server. If you omit this line, git will authenticate under different username, hence this error will occur.

    0 讨论(0)
  • 2020-11-27 09:44

    After you add some stuff... commit them and after all finished push it! BANG!! Start all problems... As you should notice there are some differences in the way both new and existent projects were defined. If some other person tries to add/commit/push same files, or content (git keep both as same objects), we will face the following error:

    $ git push
    Counting objects: 31, done.
    Delta compression using up to 2 threads.
    Compressing objects: 100% (17/17), done.
    Writing objects: 100% (21/21), 2.07 KiB | 0 bytes/s, done.
    Total 21 (delta 12), reused 0 (delta 0)
    remote: error: insufficient permission for adding an object to repository database ./objects  remote: fatal: failed to write object
    

    To solve this problem you have to have something in mind operational system's permissions system as you are restricted by it in this case. Tu understand better the problem, go ahead and check your git object's folder (.git/objects). You will probably see something like that:

    <your user_name>@<the machine name> objects]$ ls -la
    total 200
    drwxr-xr-x 25 <your user_name> <group_name> 2048 Feb 10 09:28 .
    drwxr-xr-x  3 <his user_name> <group_name> 1024 Feb  3 15:06 ..
    drwxr-xr-x  2 <his user_name> <group_name> 1024 Jan 31 13:39 02
    drwxr-xr-x  2 <his user_name> <group_name> 1024 Feb  3 13:24 08
    

    *Note that those file's permissions were granted only for your users, no one will never can changed it... *

    Level       u   g   o
    Permission rwx r-x ---
    Binary     111 101 000
    Octal       7   5   0
    

    SOLVING THE PROBLEM

    If you have super user permission, you can go forward and change all permissions by yourself using the step two, in any-other case you will need to ask all users with objects created with their users, use the following command to know who they are:

    $ ls -la | awk '{print $3}' | sort -u 
    <your user_name>
    <his user_name>
    

    Now you and all file's owner users will have to change those files permission, doing:

    $ chmod -R 774 .
    

    After that you will need to add a new property that is equivalent to --shared=group done for the new repository, according to the documentation, this make the repository group-writable, do it executing:

    $ git config core.sharedRepository group
    

    https://coderwall.com/p/8b3ksg

    0 讨论(0)
  • 2020-11-27 09:48

    Oddly enough, I had this issue on one clone of the repo I had, but not another I had. Aside from re-cloning the repo (which a coworker did to successfully get around this issue), I managed to do a "git reset" to the commit I had before the failures started. Then I re-committed the changes, and I was able to push successfully after that. So despite all the indications there was a problem on the server, in this case it apparently was indicative of some oddity in the local repo.

    0 讨论(0)
  • 2020-11-27 09:50

    Try to do following:

    Go to your Server

        cd rep.git
        chmod -R g+ws *
        chgrp -R git *
        git config core.sharedRepository true
    

    Then go to your working copy(local repository) and repack it by git repack master

    Works perfectly to me.

    0 讨论(0)
  • 2020-11-27 09:51

    This works:

    sudo chmod -R gituser.gituser objects
    
    0 讨论(0)
提交回复
热议问题