Git错误:无法附加到.git / logs / refs / remotes / origin / master:权限被拒绝

我有一个奇怪的问题,我似乎无法解决。 这是发生了什么事情:

我有一些日志文件,我不想在那里的github存储库。 我发现这个脚本,完全从git历史中删除文件,如下所示:

#!/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, eg, 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 

当然,我先做了一个备份,然后试了一下。 它似乎工作正常。 然后我做了一个git push -f,并接到以下消息:

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

似乎一切似乎都推好,因为这些文件似乎从GitHub存储库中消失了,如果我尝试再次推送,我会得到同样的结果:

 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 

编辑

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

谢谢!

编辑

呃哦。 问题。 我一直在整个这个项目的工作,只是去做我的改变:

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

所以我:

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

我再次尝试提交,我得到:

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

所以我:

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

然后我再次尝试提交:

 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 git@github.com:IAmCorbin/MooKit.git 59da24e..68b6397 master -> master 

万岁。 我跳上http://GitHub.com并查看存储库,而我最近的提交没有find。 ::刮头::所以我再次推:

 Everything up-to-date 

呃…它看起来不像。 我从来没有遇到过这个问题,这可能是github的问题吗? 还是我搞砸了我的git项目?

编辑

没关系,我做了一个简单的:

 git push origin master 

并推动罚款。

这看起来像你在本地运行git,从而改变了一些跟踪origin分支位置的文件的所有权。

修复文件的所有权,你应该没问题:

 # run this from the root of the git working tree sudo chown -R "${USER:-$(id -un)}" . 

在我的情况下,我在本地创build了具有root权限的文件,并尝试使用本地权限将代码推送到远程。 所以我跑了这个命令

 $find . -user root 

找出所有文件都有“root”作为所有者。 然后我使用以下命令将所有在根目录下的文件的所有者更改为本地

 $sudo chown parineethat `find . -user root` 

然后我能够将我的代码从本地推送到远程。

请首先从下面的root帐户授予权限

 chmod -R 777 foldername 

之后运行commit命令