2015-12-14 2 views
10

Я следую этой документации: https://help.github.com/articles/duplicating-a-repository/! [Удаленный отклоненные] ошибки после того, как зеркальное отображение репозитория Git

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) 

Каковы эти ошибки? Можно ли считать хранилище зеркальным?

ответ

14

Как упоминалось в this issue, это происходит, когда вы зеркалируете репо GitHub, которое имеет тянущие запросы, сделанные к нему.

В рефах начала «refs/pull» являются синтетическими чтениями только рефами, созданного GitHub - вы не можете обновить (и, следовательно, «чистый») их, потому что они отражают ветви, которые вполне могут на самом деле поступают из других хранилищ - те, которые отправили вам запросы.

Таким образом, в то время как вы толкнул все свои реальные реф, тянущие запросы не обновляются

Вы должны были бы mirror a GitHub repo without their pull requests.

Просто замените кетчуп все refspec выше двух более конкретными спецификаций, просто включить все головы и тег, но не тянет, и все удаленные подтягивания рефов больше не будет превратить его в открытое зеркало:

fetch = +refs/heads/*:refs/heads/* 
fetch = +refs/tags/*:refs/tags/* 
fetch = +refs/change/*:refs/change/* 
+0

Спасибо, я прошел процедуру, но по какой-то причине я все еще получаю ту же ошибку. Я клонирую репо с помощью --mirror, я редактирую конфигурацию git с помощью 'git config -e' и запускаю' 'git remote update' и' git push mirror' и по-прежнему получаю ту же ошибку. – deez

+0

@deezx Что возвращает 'git config --get-regex remote.origin.fetch'? – VonC

+0

Это выход- $ git config --get-regex remote.origin.fetch remote.origin.fetch + refs/heads/*: refs/heads/* remote.origin.fetch + refs/tags/*: refs/tags/* На самом деле, когда я клонировал репозиторий без --mirror, отредактировал git config, как вы написали, это сработало. он извлекал только ветки и теги, так что это сработало! Мой единственный вопрос сейчас в том, что я вижу, что он не отразил 'refs/changes'. Есть ли способ сказать git для получения ALL, за исключением запросов на pull ('refs/pull')? – deez

Смежные вопросы