2016-09-23 5 views
1

Betrachten Sie das folgende Szenario:
Zwei verschiedene Maschinen und lokale Repositories (A und B) enthalten das gleiche Projekt. Die Arbeit ist in beiden Repositories unterschiedlich fortgeschritten und aktuell ist B am aktuellsten. Die Maschinen A und B sind nicht vernetzt.Git - So führen Sie zwei lokale getrennte Repositories zusammen

  1. Es ist erwünscht, B in A zu fusionieren, wird die Geschichte des sowohl A als auch B. Arbeits Konservieren dann eine Zeit lang auf A. weiterhin
  2. Nach einigem zusätzlichen Fortschritt auf A, ist es erwünscht, eine fusionieren auf B, Erhaltung Geschichten zu späteren Arbeiten an B.

Ist das möglich? Welche Vorgänge sind erforderlich, um auf A und B die Anforderungen 1 und 2 zu erfüllen?

Vielen Dank im Voraus.

+1

Sind Ihre Repositories beide Klone aus der gleichen Repository? Haben sie eine gemeinsame Geschichte, die auseinander gegangen ist? – alexbclay

+2

Sehen Sie sich 'git bundle' an, das die Verwendung von" sneakernet "ermöglicht, um Daten zwischen Repositories zu übertragen, die nicht miteinander kommunizieren können. Oder, wenn Sie in der Lage sind, Repos irgendwie von Maschine zu Maschine zu übertragen, ist Git in der Lage, Änderungen von "lokalen URLs" wie '/ path/to/a/repo.git' zu holen. – kostix

+0

@alexbclay Das Projekt wurde ohne Quellcodeverwaltung gestartet und Sicherungen wurden von einem Computer auf den anderen kopiert. Dann wurde git ohne Serverzugriff implementiert, nur lokale Repositories (keine Synchronisation), aber Entwicklungs- und Master-Zweige werden verwendet. Ich möchte in der Lage sein, entweder an Maschine A oder B zu arbeiten und dann beide Repositories zusammenzuführen, wobei die Historien erhalten bleiben. – David

Antwort

1

Wenn die Server miteinander kommunizieren können, können Sie jedes Repo-Set eine Fernbedienung für den anderen

[email protected]> git remote add origin_b A:/path/to/repo.git 

[email protected]> git remote add origin_a B:/path/to/other/repo.git 

Dann wird jedes Repo sein können jeweils andere Zweige holen zu verschmelzen und Zweig nach Bedarf. Wenn sich die Zweignamen gegenseitig stören, können Sie sie umbenennen, um genauer zu sein.

Eine andere Möglichkeit wäre, ein neues zentralisiertes Repo zu erstellen, das beide Server als Quelle verwenden.

Dieser Link hat einige gute Informationen über git Workflows: https://www.atlassian.com/git/tutorials/comparing-workflows

Verwandte Themen