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

Der Workshop zeigt anhand einer konkreten Umgebung, wie ein moderner Software-Entwicklungsprozess technisch unterstützt werden kann. Dabei geht es zentral um die pragmatische Umsetzung eines CI-Ansatzes.

ORDIX® news - Artikel zum Thema

...

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

Dieser Artikel richtet sich an Entwickler, die bereits erste Erfahrungen mit Git gemacht haben und nun auf der Suche nach weiteren Kommandos sind, die ihren Arbeitsalltag erleichtern. Es werden hier keine Anleitungen oder „Best Practices" gegeben, jedoch eine Reihe von Befehlen vorgestellt, die Lust auf mehr machen.
0
(S)choco ist yum(my)

Related Posts

Kommentare

 
Keine Kommentare vorhanden
Bereits registriert? Login
Gäste
Mittwoch, 29. März 2017
Wenn Sie sich automatisch registrieren möchten, füllen Sie bitte die Felder Benutzername, Name und E-Mail.
Füllen Sie bitte die Felder Name und E-Mail, wenn Sie sich nicht registrieren möchten.

Sicherheitscode (Captcha)

Unsere Autoren

Technologie Blogs

Tutorials

4 members

Webentwicklung

3 members

Java

3 members

Archiv | Blog-Beiträge

Login