So erhalten Sie Änderungen von einem anderen Zweig

85

Ich arbeite derzeit an einer featurexNiederlassung. Unsere Hauptniederlassung heißt Niederlassung our-team. Seit ich anfange zu arbeiten featurex, wurden weitere Änderungen an der Verzweigung vorgenommen our-team. Bevor ich featurexauf das Zusammenführen dränge, möchte ich lokal alle Änderungen vom our-teamZweig in übernehmen, featurexdamit ich sicherstellen kann, dass alles wie erwartet funktioniert.

Ich habe dies lokal getan, um die neuesten Änderungen von zu erhalten our-team.

git checkout our-team
git pull

Wie kann ich das machen?

Anthony
quelle
6
Sie haben die Frage sehr bewusst und präzise gestellt. Dies erleichtert die Beantwortung und das Verständnis für Noobs (wie mich).
douglas.kirschman

Antworten:

45

Sie können Rebase beispielsweise verwenden, git rebase our-teamwenn Sie sich in Ihrer Niederlassung befindenfeaturex

Dadurch wird der Startpunkt des Zweigs am Ende Ihres our-teamZweigs verschoben und alle Änderungen in Ihrem featurexZweig zusammengeführt.

JulCh
quelle
3
Ich werde dies in Zukunft verwenden, diesmal habe ich jedoch nur Folgendes getan. Hat es den gleichen Effekt? git checkout our-team git pull git checkout featurex git merge our-team
Anthony
5
Ich möchte betonen: Wenn Sie dies tun und die Änderungen von lokal nicht haben our-team, müssten Sie git fetch && git rebase origin/our-teamstattdessen ausführen . Ihre Befehle setzen voraus, dass das Repository zuvor aktualisiert wurde.
Makoto
98
  1. Gehe zur Hauptniederlassung our-team

    • git checkout unser-team
  2. Ziehen Sie alle neuen Änderungen aus dem our-teamZweig

    • Git Pull
  3. Geh in deine Filiale featurex

    • Git Checkout featurex
  4. Führen Sie die Änderungen von our-teamZweig zu featurexZweig zusammen

    • Git Merge our-team
    • oder git cherry-pick,{commit-hash} wenn Sie bestimmte Commits zusammenführen möchten
  5. Schieben Sie Ihre Änderungen mit den Änderungen der our-teamVerzweigung

    • Git Push

Hinweis : Wahrscheinlich müssen Sie Konflikte beheben, nachdem Sie our-teamZweig in featurexZweig zusammengeführt haben, bevor Sie einen Push ausführen

Jad Chahine
quelle
Wo würde Git Pull reinkommen?
Chia Yongkang
26
git fetch origin our-team

oder

git pull origin our-team

Aber zuerst sollten Sie sicherstellen, dass Sie sich bereits in dem Zweig befinden, auf den Sie aktualisieren möchten (featurex).

Heisenberg
quelle
8

Du bist fast am Ziel :)

Alles was übrig bleibt ist zu

git checkout featurex
git merge our-team

Dadurch wird unser Team in featurex zusammengeführt.

Das oben Gesagte setzt voraus, dass Sie Ihre Änderungen in featurex bereits festgeschrieben / gespeichert haben. Wenn dies nicht der Fall ist, müssen Sie dies zuerst tun.

Pierre Fouilloux
quelle
5

Für andere Leute, die auf diesen Beitrag bei Google stoßen. Es gibt zwei Möglichkeiten, entweder Ihren Zweig zusammenzuführen oder neu zu gründen . Beide funktionieren unterschiedlich, haben aber ähnliche Ergebnisse.

Die akzeptierte Antwort ist eine Rebase . Dadurch werden alle vorgenommenen Festschreibungen übernommen our-team und anschließend die vorgenommenen Festschreibungen angewendet featurex, sodass Sie aufgefordert werden, sie nach Bedarf zusammenzuführen.

Eine kleine Einschränkung beim Umbasieren ist, dass Sie Ihren Zweigverlauf verlieren / neu schreiben, was git im Wesentlichen mitteilt, dass Ihr Zweig nicht bei Commit 123abc, sondern bei Commit 456cde begonnen hat. Dies führt zu Problemen für andere Personen, die in der Zweigstelle arbeiten, und einige Remote-Tools beschweren sich darüber. Wenn Sie sich jedoch sicher sind, was Sie tun, ist die --forceFlagge dafür gedacht.

Was andere Poster vorschlagen, ist eine Zusammenführung . Dadurch wird der featurexZweig mit dem Status, in dem er sich befindet, zusammengeführt und versucht, ihn mit dem aktuellen Status von zusammenzuführen. Dadurch werden our-teamSie aufgefordert, ein großes Zusammenführungs-Commit durchzuführen und alle Zusammenführungsfehler zu beheben, bevor Sie zu wechseln our-team. Der Unterschied besteht darin, dass Sie Ihre featurexCommits vor den our-teamneuen Commits anwenden und dann die Unterschiede beheben. Sie schreiben den Verlauf auch nicht neu, sondern fügen stattdessen ein Commit hinzu, anstatt die vorherigen neu zu schreiben.

Beide Optionen sind gültig und können zusammenarbeiten. Was normalerweise (damit meine ich, wenn Sie weit verbreitete Tools und Methoden wie Git-Flow verwenden ) für einen Feature-Zweig durchgeführt wird, ist, ihn in den Hauptzweig zusammenzuführen, häufig eine Zusammenführungsanforderung zu durchlaufen und alle Konflikte zu lösen die zu einem (oder mehreren) Merge-Commits führen.

Rebasing ist eine interessante Option, die Ihnen dabei helfen kann, Ihren Zweig zu reparieren, bevor Sie eine Zusammenführung durchführen, und die Schmerzen bei einem großen Zusammenführungs-Commit lindert.

CyberFoxar
quelle