2016-04-12 3 views
0

Ich habe einen Git-Remote-Master und zwei lokale Git-Repos, die von diesem Master ziehen und drücken; Sie sind die einzigen Repos, die diesen Master benutzen. Die drei Repos laufen auf separaten Rechnern.Wiederaufbau von Git-Master aus den lokalen Repos

Die VM für den Master wurde beschädigt und mein Remote-Master wurde zerstört. Ich habe jedoch immer noch die beiden lokalen Repos, also habe ich alle Daten und alle Zweige, die mir wirklich wichtig sind.

Was ist der einfachste Weg, um einen Master, der die Vereinigung der beiden lokalen Repos ist, wieder aufzubauen und diesen als meinen Remote Master zu verwenden?

+0

Lokale Repositorys enthalten den vollständigen Verlauf. Daher sollten Ihre lokalen Repositorys idealerweise identisch mit dem Remote-Repository sein. Daher sollte das einfache Drücken der Zweige mit 'git push' funktionieren. – poke

+0

OK, also verwende ich git init für ein leeres Repo auf der Fernbedienung und führe dann git push von den Einheimischen aus, um den Master zu füllen? –

+0

Ja, Sie könnten die vorhandene löschen, dann eine neue initialisieren (mit 'git init --bare') und dann von den lokalen Repositories drücken, um sie erneut einzurichten. – poke

Antwort

0

Hier ist der Prozess, der Sack erklärt mir.

  1. Erstellen Sie auf dem Remotecomputer ein blankes Repository. git init --bare DIR (Beachten Sie, dass wenn Sie nicht zuvor aus einem leeren Repository ziehen, Ihre Fernbedienungen nach einem .git Verzeichnis suchen, aber ein bare Repository hat kein .git Unterverzeichnis automatisch, so dass Sie entweder explizit sein müssen, dh DIR/.git, oder Sie müssen die Fernbedienung in der .git/config Datei bearbeiten.)
  2. Von den lokalen Repos, Rebase Ihren Master auf die neueste Version, z git checkout master && git rebase work dann drücken Sie das auf die Fernbedienung git push origin.

Sie können ein unheimlich aussehende wie Warnung erhalten so

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. 

... 

Die Nachricht auf meiner Situation keine Auswirkungen hatte.

Verwandte Themen