2015-10-12 1 views
2

Есть много ответов, в которых говорится, что git 1.9 устраняет ограничения мелких клонов. Тем не менее, я использую 2.6.1 и все еще имеющие следующий основной вопрос:Неверное обновление не разрешено (git> 1.9)

Первое, создать пустой репозиторий где-то:

cd /tmp 
mkdir target 
cd target 
git init 

Затем я неглубокий клон некоторые репо и добавить выше репо, как удаленный:

cd /tmp 
git clone --depth 1 [email protected]:muennich/urxvt-perls.git 
cd urxvt-perls 
git remote add target /tmp/target 

Наконец, я нажимаю эту репо на удаленный:

git push target master 

Но тогда я г et:

! [remote rejected] master -> master (shallow update not allowed) 
error: failed to push some refs to '/tmp/target' 

Что мне здесь не хватает?

+0

Если вас интересует gitlab, позволяющая проверить https://gitlab.com/gitlab-org/gitlab-ce/issues/3033. – memeplex

+0

Посмотрите на это [remote-reject-shallow-update-not-allowed-after-change-git-remote-url] (http://stackoverflow.com/a/28985327/2206581) – hisland

ответ

2

Я отвечаю на свой вопрос.

Я попытался пойти в другую сторону и добавить urxvt-perls в качестве пульта для target, после чего выберем оттуда. Это не по той же причине, но привело меня ближе к решению. Из git-fetch человека:

--update-shallow 
     By default when fetching from a shallow repository, git fetch 
     refuses refs that require updating .git/shallow. This option 
     updates .git/shallow and accept such refs. 

Теперь, с помощью этой опции позволяет получать неглубокое. Итак, предыдущий вопрос: Можно ли указать поведение --update-shallow при нажатии? Ну, есть возможность для этого:

receive.shallowupdate 
    If set to true, .git/shallow can be updated when new refs require 
    new shallow roots. Otherwise those refs are rejected. 

Я все еще пытаюсь установить это в GitHub и любит, хотя.

2

Использование git merge --squash.

Если ваш пульт дистанционного управления неглубокий, и вы хотите слить его, сжимайте это merge into a single commit без необходимости копировать историю совершений (которые неглубокие ссылки скрывают).

-1

Ну на сервере репо Linux ... это

git config --local --add receive.shallowUpdate true 

в результате этого добавления в конфигурационный файл репо.

[receive] 
    shallowUpdate = true 

Возможно, вы можете добавить это в конфигурационный файл репо.

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