2621 Stimmen

Wie führe ich einen Git-Zweig sicher in Master zusammen?

Ein neuer Zweig von master erstellt wird, nennen wir es test .

Es gibt mehrere Entwickler, die sich entweder zu master oder andere Zweige erstellen und später in master .

Sagen wir, die Arbeit an test mehrere Tage in Anspruch nimmt und Sie möchten kontinuierlich die test aktualisiert mit Übertragungen innerhalb master .

Ich würde tun git pull origin master de test .

Frage 1: Ist dies der richtige Ansatz? Andere Entwickler hätten leicht an denselben Dateien arbeiten können, an denen ich gearbeitet habe.


Meine Arbeit an test ist fertig und ich bin bereit, sie wieder mit master . Hier sind die beiden Möglichkeiten, die mir einfallen:

A:

git checkout test
git pull origin master
git push origin test
git checkout master
git pull origin test 

B:

git checkout test
git pull origin master
git checkout master
git merge test

Ich benutze nicht --rebase denn nach meinem Verständnis erhält rebase die Änderungen von master und stapeln meine darüber, so dass sie die Änderungen anderer Leute überschreiben könnte.

Frage 2: Welche dieser beiden Methoden ist die richtige? Worin besteht der Unterschied?

Das Ziel dabei ist es, meine test Zweigstelle über die Geschehnisse in der master und später könnte ich sie wieder in master in der Hoffnung, die Zeitachse so linear wie möglich zu halten.

7voto

djheru Punkte 3127

Dies ist der Arbeitsablauf, den ich bei meiner Arbeit mit dem Team verwende. Das Szenario ist wie von Ihnen beschrieben. Zuerst, wenn ich mit der Arbeit fertig bin test Ich rebase mit master, um alles einzubinden, was in der Zeit, in der ich an dem Projekt gearbeitet habe, zu master hinzugefügt wurde. test Zweigstelle.

git pull -r upstream master

Dadurch werden die Änderungen in Master übernommen, da Sie die test Zweig und wenden Sie sie an, und wenden Sie dann die Änderungen an, die Sie zum Testen "über" dem aktuellen Stand von master vorgenommen haben. Hier kann es zu Konflikten kommen, wenn die anderen Personen Änderungen an denselben Dateien vorgenommen haben, die Sie in test bearbeitet haben. Wenn dies der Fall ist, müssen Sie sie manuell korrigieren und festschreiben. Sobald Sie das getan haben, können Sie zum Master-Zweig wechseln und zusammenführen test ohne Probleme ein.

6voto

user776686 Punkte 7180

Ich würde die Rebase-Methode anwenden. Vor allem, weil es Ihren Fall semantisch perfekt widerspiegelt, d.h. was Sie tun möchten, ist, den Zustand Ihres aktuellen Zweigs zu aktualisieren und "so zu tun", als ob er auf dem neuesten basiert.

Also, ohne überhaupt nachzusehen master würde ich:

git fetch origin
git rebase -i origin/master
# ...solve possible conflicts here

Natürlich wird durch das Abrufen vom Ursprung nicht der lokale Status Ihrer master (da es keine Zusammenführung durchführt), aber für unseren Zweck ist es völlig in Ordnung - wir wollen vermeiden, dass wir umschalten, um Zeit zu sparen.

5voto

Vinay Sikarwar Punkte 418
git checkout master
git pull origin master
# Merge branch test into master
git merge test

Wenn die Datei nach dem Zusammenführen geändert wird, wird beim Zusammenführen die Fehlermeldung "Konflikt auflösen" ausgegeben.

Sie müssen also zunächst alle Konflikte lösen, dann alle Änderungen erneut festschreiben und anschließend die

git push origin master

Dies ist besser für denjenigen, der Änderungen im Testzweig vorgenommen hat, da er weiß, welche Änderungen er vorgenommen hat.

5voto

cgnorthcutt Punkte 3434

Die Antwort von @KingCrunch sollte in vielen Fällen funktionieren. Ein Problem, das auftreten kann, ist, dass Sie sich auf einem anderen Rechner befinden, der die neuesten Daten aus dem Test abrufen muss. Ich empfehle daher, zuerst test zu ziehen. Die Revision sieht wie folgt aus:

git checkout test
git pull
git checkout master
git pull origin master
git merge test
git push origin master

5voto

omkar Punkte 216

Ich werde je nach Entwicklungs- und Funktionszweig antworten,

Wenn Sie auf dem Feature-Zweig sind und ihn mit Develop aktualisieren müssen, verwenden Sie die folgenden Befehle:

git checkout develop
git pull
git checkout feature/xyz
git merge develop

Jetzt ist Ihr feature/xyz wird aktualisiert mit develop Zweig und Sie können Ihre Änderungen an entfernte feature/xyz .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X