Von ORDIX AG auf Donnerstag, 03. November 2016
Kategorie: Data Management

Git-repositories synchronisieren

In einem Projekt wird ein Git-Repository auf einen anderen Server umgezogen, indem das gesamte Verzeichnis kopiert wird. Das alte Repository ist weiterhin erreichbar, soll aber nicht verwendet werden. Nun haben nicht alle Entwickler ihre Remotes rechtzeitig angepasst und haben ihren letzten Code versehentlich in das alte Repository hochgeladen.

Da jedoch bereits andere Entwickler auch in das neue Repository Änderungen hochgeladen haben, kann das alte Repository nicht einfach erneut herüber kopiert werden.

Um beide Repositories zu synchronisieren, kann die Eigenschaft ausgenutzt werden, dass es sich bei Git um ein verteiltes Source-Code-Managment handelt [1].

Im Folgenden wird zur Vereinfachung das alte Repository R1 und das Neue R2 genannt. Es wird davon ausgegangen, dass die Entwickler nur Änderungen auf einem Branch getätigt haben. Ansonsten müsste man Schritte 4-6 für alle Branches durchführen.

Zunächst wird R2 geklont und in das Arbeitsverzeichnis gewechselt:

1. git clone https://url/to/R2.git 

2. cd R2

Nun wird ein Remote „oldrepo" zum alten Repository R2 hinzugefügt:

3. git remote add oldrepo https://url/to/R1.git

Der betroffene Branch wird ausgewählt:

4. git checkout master

Die versehentlich auf R1 hochgeladenen Änderungen werden geladen:

5. git fetch oldrepo

Anschließend werden die Commits aus R1 und R2 mit git merge zusammengefasst:

6. git merge oldrepo/master

Letztendlich werden die zusammengefassten Commits auf beide Remotes hochgeladen (push):

7. git push origin 

8. git push oldrepo

Der Branch master ist nun auf beiden Repositories R1 und R2 auf demselben Stand.

Anstatt eines Merges könnte man auch über einen Rebase beide master synchronisieren. Hiervon ist jedoch abzuraten, da es durch das Umschreiben der Historie zu Konflikten kommen kann, falls mehrere Entwickler auf einem Branch tätig sind. Ohnehin wäre der Vorteil nur kosmetischer Natur.

Verwendete Software: git 2.6.2, git-bash

Seminar zum Thema

Continuous Integration (CI) Workshop

ORDIX news - Artikel zum Thema

Git-Kommandos für Fortgeschrittene: Hinterm Horizont geht´s weiter

Kommentare hinterlassen