web-dev-qa-db-ja.com

! [リモート拒否] gitリポジトリをミラーリングした後のエラー

私はこのドキュメントに従っています: https://help.github.com/articles/duplicating-a-repository/

git clone --mirror https://github.com/exampleuser/repository-to-mirror.git

cd repository-to-mirror.git

git Push --mirror https://github.com/exampleuser/mirrored

出力は、リポジトリがミラーとしてプッシュされていることを示していますが、何らかの理由でこれらのエラーも発生しています。

 ! [remote rejected] refs/pull/1/head -> refs/pull/1/head (deny updating a hidden ref)
 ! [remote rejected] refs/pull/1/merge -> refs/pull/1/merge (deny updating a hidden ref)

これらのエラーは何ですか?リポジトリがミラーリングされていると思いますか?

25
deez

この問題 で述べたように、これはpull要求が作成されたGitHubリポジトリをミラーリングするときに発生します。

'refs/pull'で始まる参照は、GitHubによって作成された読み取り専用の参照です-更新できません(したがって、 'クリーン')それらは、実際には他のリポジトリからのブランチを反映しているためです-プルリクエストをあなたに提出したものです。

したがって、実際の参照をすべてプッシュしても、プルリクエストは更新されません。

GitHubリポジトリをミラー化するプルリクエストなし にする必要があります。

上記のcatch-all refspecを2つのより具体的な仕様に置き換えるだけで、すべてのヘッドとタグだけが含まれ、プルは含まれなくなります。すべてのリモートプルrefがベアミラーに組み込まれなくなります。

fetch = +refs/heads/*:refs/heads/*
fetch = +refs/tags/*:refs/tags/*
fetch = +refs/change/*:refs/change/*
24
VonC

の代わりに

git clone-mirror

使用する

git clone-bare

手順

3
Smart Networks

(私はこれをコメントにしたかったが、十分な評判ではなかった)

@VonCの答えに基づいて、これは問題のないように聞こえます。

したがって、実際の参照をすべてプッシュしても、プルリクエストは更新されません。

リポジトリを複製するシナリオが2つあります。

  1. 完全に制御できるレポのバックアップ/コピーが必要です。
  2. リポジトリの履歴を変更していて、変更を元に戻す必要がある場合に備えて、ローカルにバックアップが必要です。

どちらの場合も、git clone --mirrorが最も安全なオプションです。Pushにエラーが表示されても、プル以外のリクエストに関連するすべてのコンテンツが正常にプッシュされ、シナリオ1が処理されます。シナリオ2の場合は、バックアップの一部としてのプルリクエスト参照。

0
zhanga