Wie aktualisiere ich meinen funktionierenden Git-Zweig von einem anderen Zweig (entwickeln)?


74

Ich habe wie vor einem Monat einen neuen Zweig für meinen Code erstellt. Ich habe den Zweig feature1 aus dem Entwicklungszweig erstellt .

⇒  git branch 
  develop
* feature1

Ich arbeite jetzt seit einem Monat an Feature1 und viele Änderungen wurden vorgenommen, um den Zweig zu entwickeln . Wie kann ich mein aktuelles Zweig- Feature1 mit den neuesten Commits bei der Entwicklung eines Zweigs aktualisieren ?

Ich möchte den Master nicht auschecken und meinen Feature1- Zweig zusammenführen. Ich möchte auch nicht git cherry-pick verwenden , um Commits manuell von Develop auf Feature1 zu verschieben.

Irgendeine Hilfe ?

Antworten:


103

Sie führen die Entwicklung einfach zu Feature1 zusammen:

git checkout feature1
git merge develop

Es ist nicht erforderlich, einen anderen Zweig wie den Master einzubeziehen.


Aber dies wird alle
Verpflichtungen

Natürlich wird es. Die Frage war im Wesentlichen: "Wie kann ich alle Entwicklungsverpflichtungen in die Branche einordnen?"
musiKk

3
Nein, es ist nicht so, es war "Ich arbeite in Zweig X, aber ich möchte, dass dieser Zweig die neuesten Updates von der Entwicklung hat". Wenn Sie eine PR für die Entwicklung durchführen, möchten Sie nur Ihre Zweig-Commits und nicht die gesamte Commit-Historie
Htafoya

1
Ich meine. Der aktuelle Status von "Entwickeln" befindet sich in "Feature1", aber die Commits wurden dort nicht generiert. Bei der Zusammenführung sieht es so aus, als ob alle diese Entwicklungs-Commits in "feature1"
htafoya

1
Entschuldigung, ich glaube, ich habe schlecht erklärt. Lassen Sie es mich noch einmal versuchen ... Nachdem der git merge developEntwickler ausgeführt wurde, wird der Tipp von feature1 aktualisiert, einschließlich des neuen Codes aus der Entwicklung. Dadurch kann der Entwickler mit aktuellem Code arbeiten. Die Zusammenführung wirkt sich in keiner Weise auf den Entwicklungszweig aus. Vielleicht möchte dieser Entwickler irgendwann in der Zukunft Feature1 in Develop zusammenführen (dh umgekehrt), um den Entwicklungstipp zu aktualisieren, und dies erfordert eine Überprüfung. Zu diesem Zeitpunkt wird in der Überprüfung festgelegt, welche temporären Zusammenführungs-Commits erstellt wurden, damit die Prüfer sehen können, wie sich die Entwicklung ändern wird.
Michael

38

Zuerst müssen Sie Ihren Entwicklungszweig aktualisieren , dann Ihre Funktion auschecken und zusammenführen / neu starten.

git checkout develop
git pull
git checkout feature/myfeature

Jetzt können Sie sich zwischen dem Laufen entscheiden :

git merge develop
git rebase develop

Der Unterschied zwischen mergeund rebasebesteht darin, dass mergealle Commits in Ihrem Zweig gespeichert werden. Dies ist wichtig, wenn Ihre Teil-Commits viele Inhalte enthalten, deren Aufbewahrung interessant sein kann.

Die rebaseOption ist in einigen Teams obligatorisch.

Wenn Sie bereit sind, können Sie in Ihre eigene Filiale pushen (z. B. für eine Pull-Anfrage).

git push origin feature/myfeature

Ich denke, dies ist eine bessere Lösung als die vorgesehene Antwort.
CSG

4

Dieser Anwendungsfall ist sehr hilfreich, um Ihren PR-Zweig auf dem neuesten Stand zu halten. Erstens würde ich Ihnen empfehlen, zuerst Ihre Remote-Änderungen abzurufen, dh git fetch dann zusammenzuführen oder neu zu starten develop, aber von der Remote- Änderung , z

git rebase -i origin/develop

oder

git merge origin/develop

Auf diese Weise aktualisieren Sie Ihren PR-Zweig, ohne zwischen den Zweigen hin und her zu wechseln.


Git Rebase ist wie Merge, nicht wahr? aber das gleiche passiert,
Kavindu Gayantha

2
In der Git-Rebase schreiben Sie den Verlauf Ihres Zweigs mit einer Mischung aus 2 neu. Bei der Zusammenführung wenden Sie einfach die Änderungen des anderen Zweigs in einem neuen Zusammenführungs-Commit auf Ihren an.
EliuX

1

NIEDERLASSUNGEN:

DEV ====> entwickeln

feature1 ====> funktioniert


SCHRITT 1 GIT SENDEN VON DER WEBSITE

Überprüft den Zweig, den Sie synchronisieren

git status

Fügen Sie Dateien für das Commit hinzu

git add .

verpflichtet sich mit einer Beschreibung

git commit -m "COMMENT"

Senden Sie an den Zweig, den Sie synchronisiert haben

git push

SCHRITT 2 SYNCHRONISIEREN DES AKTUALISIERTEN ARBEITSZWEIGS MIT DEV (Entwicklung) - synchronisiert den Arbeitszweig mit dem Entwicklungszweig (aktualisiert den Entwicklungszweig)

Synchronisieren Sie mit der Fernbedienung und wechseln Sie zum DEV-Zweig

git checkout DEV

Fordern Sie an, den Zweig, den Sie synchronisieren, mit dem Zweig feature1 zusammenzuführen

git merge feature1

Führen Sie den aktuellen Zweig mit dem Zweig feature1 zusammen

git push

SCHRITT 3 GIT FINDEN DER FERNBEDIENUNG - Aktualisieren Sie den Arbeitszweig aus dem aktualisierten Entwicklungszweig

verbindet sich mit dem Referenzzweig

git checkout DEV

Änderungen suchen

git pull

Synchronisiert mit Ihrem Arbeitszweig

git checkout feature1

Anforderung, den Zweig, den Sie synchronisiert haben, mit dem DEV-Zweig zusammenzuführen

git merge DEV

Führen Sie den aktuellen Zweig mit dem DEV-Zweig zusammen

git push

0

Verwenden Sie das Auschecken ohne Zusammenführen, um bestimmte Dateien oder bestimmte Commits abzurufen. Ich habe es auf diese Weise versucht und es funktioniert!

git checkout develop <commit hash>_or_<specific-files-path>

Die Quelle .


0

Um zu vermeiden, dass sich die Commits durch eine einfache Zusammenführung entwickeln, habe ich festgestellt, dass der einfachere (weniger technischere ) Weg dies speziell ist, wenn Sie bereits Druck gemacht haben :

  1. Ändern Sie die Entwicklung und stellen Sie sicher, dass Sie die neuesten Änderungen vorgenommen haben
  2. Erstellen Sie einen weiteren Zweig aus entwickeln, feature1_b
  3. Zusammenführen feature1mitfeature1_b
  4. Löschen, wenn Sie das Original wünschen feature1

Wenn Sie also Ihre PR feature1_bin Entwicklung entwickeln, werden nur Ihre neuen Änderungen und nicht die gesamte Geschichte der Commits angezeigt.

Wenn Sie nicht gedrückt haben, ist die Antwort von @ stackdave eine gute Antwort.


0
$ git checkout <another-branch> <path-to-file> [<one-more-file> ...]
$ git status
$ git commit -m "Merged file from another branch"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.