1. ホーム
  2. git

[解決済み] git が現在のブランチへのフェッチを拒否する

2023-04-03 10:39:01

質問

リモートリポジトリをセットアップし、新しい変更をそこにプッシュすることができますが、そこからフェッチすることができず、いつも(かなり不可解な)エラーメッセージが表示されます。

fatal: Refusing to fetch into current branch refs/heads/master of non-bare repository
fatal: The remote end hung up unexpectedly

どういうことですか?取得を有効にするにはどうしたらよいですか?

(このリモート リポジトリはバックアップ リポジトリとしてのみ使用され、私のローカル リポジトリのほとんど正確なコピーであるべきであることに注意してください。なぜそれにプッシュすることはできても、そこからフェッチすることができないのか、本当に理解できません...)

私の設定は以下のようなものです。

[remote "origin"]
    url = ssh://blablablah
    fetch = +refs/*:refs/*
    mirror = true

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

あなたがしようとしていることは、あなたが作業しているブランチを取得することです。つまり、あなたは にいて、それを更新しようとしているのです。それはありえません。むしろ更新するのは remotes/* ブランチを更新し、それを自分のローカルブランチに取り込むのが一般的です。あなたが欲しいのは、おそらく

git remote add otherrepo thehost:/the/path.git

これは、リポジトリの取得を remotes/otherrepo/* . git fetch otherrepo でうまくいくはずです。別の方法として、手動で .git/config を編集して fetch をリモートのために次のように設定します。 refs/heads/*:refs/remotes/otherrepo/* .