1. ホーム
  2. git

[解決済み] Gitのエラーです。.git/logs/refs/remotes/origin/master に追記できません。パーミッションが拒否されました

2022-12-26 23:23:46

質問

私は、解決できない奇妙な問題を抱えています。以下は、起こったことです。

私は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, 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

私はもちろん、まずバックアップをとってから試しました。それは問題なく動作しているように見えました。それから 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

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

ありがとうございます。

EDIT

Uh Oh. 問題発生です。一晩中このプロジェクトに取り組んでいて、ちょうど自分の変更をコミットしようとしたところでした。

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 [email protected]:IAmCorbin/MooKit.git
59da24e..68b6397  master -> master

万歳。に飛び乗る。 http://GitHub.com に飛び、リポジトリをチェックすると、私の最新のコミットはどこにもありませんでした。 ::scratch head:: そこでもう一度プッシュしました。

Everything up-to-date

うーん...そうでもなさそうです。今までこの問題はなかったのですが、これはgithubの問題でしょうか? それとも、私のgitプロジェクトで何か失敗したのでしょうか?

EDIT

気にしないでください、私は単純なをしました。

git push origin master

で、うまく押せました。

どのように解決するのですか?

ローカルで root 権限で git を実行し、その結果、root 権限で実行されたファイルの場所を追跡しているいくつかのファイルの所有者が変更されたように見えます。 origin ブランチの場所を追跡するいくつかのファイルの所有権を変更したようです。

ファイルの所有権を修正すれば、問題ありません。

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