2016-04-12 2 views
0

У меня есть один удаленный мастер git и два локальных репозитория git, которые тянут и толкают к этому хозяину; они являются единственными репозиториями, использующими этот мастер. Три репозитория работают на отдельных машинах.Восстановление git-мастера из локальных репозиториев

VM для мастера поврежден и разбит мой удаленный мастер. Тем не менее, у меня все еще есть два локальных РЕПО, поэтому у меня есть все данные и все ветви, которые мне действительно волнуют.

Что является самым простым способом перестроить мастер, который является объединением двух локальных репозиториев и использовать это как мой удаленный мастер впредь?

+0

Локальные хранилища содержат полную историю, поэтому в идеале ваши локальные репозитории должны быть идентичны удаленному репозиторию. Таким образом, простое нажатие ветвей с использованием 'git push' должно работать нормально. – poke

+0

ОК, поэтому я использую git init для пустого репо на пульте дистанционного управления, а затем запускаю git push от местных жителей, чтобы заполнить мастер? –

+0

Да, вы можете удалить существующий, затем инициализировать новый (с помощью 'git init --bare'), а затем нажать из локальных репозиториев, чтобы настроить его снова. – poke

ответ

0

Вот процесс, который явился мне.

  1. На удаленной машине создайте пустой репозиторий. git init --bare DIR (Обратите внимание, что если вы были не, вытаскивая из голого хранилища ранее, ваши пульты будут искать каталог .git, но у открытого репозитория автоматически нет подкаталога .git, так что вам либо нужно быть явным, то есть DIR/.git, или вам нужно отредактировать пульт дистанционного управления в файле .git/config.)
  2. Из местных репозиториев переустановите своего мастера на последнюю версию, например git checkout master && git rebase work затем нажмите это на удаленный git push origin.

Вы можете получить страшный вид предупреждения, как так

warning: push.default is unset; its implicit value has changed in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the traditional behavior, use: 

    git config --global push.default matching 

To squelch this message and adopt the new behavior now, use: 

    git config --global push.default simple 

When push.default is set to 'matching', git will push local branches 
to the remote branches that already exist with the same name. 

... 

Сообщение не оказывает никакого влияния на мою ситуацию.

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