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命令