Holen Sie sich das Git-Repository-Commit in einen anderen Git-Repository-Zweig

406
Strongground

Betrachten Sie das folgende Setup: Ein Repository1 sitzt auf Bitbucket. Eine lokale Arbeitskopie befindet sich auf meinem Computer. Ich ändere Dateien lokal, setze fest und drücke auf Repository1.

Änderungen in Repository1 (auf Bitbucket) (im Zweig "master") wurden nur von mir vorgenommen. Nun muss ich einige davon in eine "Feature" -Branche eines anderen Repository2 aufnehmen, das auch auf Bitbucket sitzt.

Der Inhalt von Repository2 ist jedoch neuer, die Änderungen, die ein Remote-Team dort vorgenommen hat, werden weder in Repository1 noch in meiner Arbeitskopie davon übernommen. Repository2 enthält auch weitere Dateien, wobei mein Repository1 nur einen kleinen Teil davon enthält.

Am Ende möchte ich einige der Änderungen in Repository1 ("Master" -Zweig) mit den neueren Dateien in Repository2 ("Feature" -Zweig) zusammenführen.

Die einzige Lösung, die ich kenne, ist jedoch unpraktisch: Meine geänderten Dateien heraussortieren und manuell zusammenführen, dann in meine lokale Arbeitskopie von Repository2 kopieren und anschließend ein Commit & Push durchführen.

Gibt es eine andere Methode? Vorzugsweise etwas, das das automatische Zusammenführen umfasst, sofern dies möglich ist.

Danke im Voraus!

2

1 Antwort auf die Frage

0
benjifisher

Ihre Frage besteht aus zwei Teilen: Wie verwalten Sie mehrere Repositorys und wie erfolgt die Zusammenführung?

Gibt es einen Grund, warum Sie zwei separate Repositorys auf BitBucket haben, anstatt ein einziges Repository mit mehreren Zweigen? Angenommen, es gibt einen guten Grund, Sie können Ihr lokales Repository dennoch verwenden, um mit zwei verschiedenen Fernbedienungen zu synchronisieren, etwa

$ git fetch repo1 branch:master $ git fetch repo2 branch:feature 

Dadurch werden lokale Zweigstellen und -features erstellt, auch wenn die Zweigstellen in den entfernten Repositorys denselben Namen haben. Nachdem Sie alles getan haben, was Sie mit diesen Zweigen zu tun haben, können Sie eine ähnliche Syntax verwenden:

$ git push repo1 master:branch $ git push repo2 feature:branch 

Sobald Sie lokale Kopien der Zweige haben, sollten Sie Ihre Änderungen mit zusammenführen können

$ git checkout feature $ git merge master 

Wenn Konflikte vorliegen, empfiehlt es sich, diese manuell zu lösen. Wenn Sie sich jedoch sicher sind, dass der Master richtig ist, können Sie -s theirsdem mergeBefehl die Option hinzufügen .

Es ist mir gelungen, eine Änderung per Patch zu kopieren. Dies ist jedoch nicht machbar. Ich werde heute Ihre Lösung ausprobieren. Strongground vor 10 Jahren 0