Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied

Tags:

git

github

I am having a strange issue that I can't seem to resolve. Here is what happend:

I had some log files in a github repository that I didn't want there. I found this script that removes files completely from git history like so:

    #!/bin/bash set -o errexit  # Author: David Underhill # Script to permanently delete files/folders from your git repository.  To use  # it, cd to your repository's root and then run the script with a list of paths # you want to delete, e.g., git-delete-history path1 path2  if [ $# -eq 0 ]; then     exit 0are still fi  # make sure we're at the root of git repo if [ ! -d .git ]; then     echo "Error: must run this script from the root of a git repository"     exit 1 fi  # remove all paths passed as arguments from the history of the repo files=$@ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD  # remove the temporary history git-filter-branch otherwise leaves behind for a long time rm -rf .git/refs/original/ && git reflog expire --all &&  git gc --aggressive --prune 

I, of course, made a backup first and then tried it. It seemed to work fine. I then did a git push -f and was greeted with the following messages:

error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied error: Cannot update the ref 'refs/remotes/origin/master'. 

Everything seems to have pushed fine though, because the files seem to be gone from the GitHub repository, if I try and push again I get the same thing:

error: Unable to append to .git/logs/refs/remotes/origin/master: Permission denied error: Cannot update the ref 'refs/remotes/origin/master'. Everything up-to-date 

EDIT

$ sudo chgrp {user} .git/logs/refs/remotes/origin/master $ sudo chown {user} .git/logs/refs/remotes/origin/master $ git push Everything up-to-date 

Thanks!

EDIT

Uh Oh. Problem. I've been working on this project all night and just went to commit my changes:

error: Unable to append to .git/logs/refs/heads/master: Permission denied fatal: cannot update HEAD ref 

So I:

sudo chown {user} .git/logs/refs/heads/master sudo chgrp {user} .git/logs/refs/heads/master 

I try the commit again and I get:

error: Unable to append to .git/logs/HEAD: Permission denied fatal: cannot update HEAD ref 

So I:

sudo chown {user} .git/logs/HEAD sudo chgrp {user} .git/logs/HEAD 

And then I try the commit again:

16 files changed, 499 insertions(+), 284 deletions(-) create mode 100644 logs/DBerrors.xsl delete mode 100644 logs/emptyPHPerrors.php create mode 100644 logs/trimXMLerrors.php rewrite public/codeCore/Classes/php/DatabaseConnection.php (77%) create mode 100644 public/codeSite/php/init.php $ git push Counting objects: 49, done. Delta compression using up to 2 threads. Compressing objects: 100% (27/27), done. Writing objects: 100% (27/27), 7.72 KiB, done. Total 27 (delta 15), reused 0 (delta 0) To [email protected]:IAmCorbin/MooKit.git 59da24e..68b6397  master -> master 

Hooray. I jump on http://GitHub.com and check out the repository, and my latest commit is no where to be found. ::scratch head:: So I push again:

Everything up-to-date 

Umm...it doesn't look like it. I've never had this issue before, could this be a problem with github? or did I mess something up with my git project?

EDIT

Nevermind, I did a simple:

git push origin master 

and it pushed fine.

like image 518
Corbin Tarrant Avatar asked Apr 15 '10 05:04

Corbin Tarrant


2 Answers

This looks like you ran git as root locally, thus changing ownership on some of the files tracking the location of the origin branch.

Fix the file ownership, and you should be fine:

# run this from the root of the git working tree sudo chown -R "${USER:-$(id -un)}" . 
like image 80
Charles Duffy Avatar answered Sep 29 '22 16:09

Charles Duffy


Let's concentrate on what it's complaining about exactly:

Permission denied error: Cannot update the ref 'refs/remotes/origin/master'.

Before doing recursive mod/ownership changes, traverse your way to that file and fix any permissions that are incorrect.

I think I caused this issue by creating a branch while I was root and then trying to mess with that branch as my user.

like image 28
Andrew E Avatar answered Sep 29 '22 17:09

Andrew E