Ich arbeite an einem Projekt und habe meine erste Pull-Anfrage eingereicht. Während ich warte, möchte ich weiter an meinem Projekt arbeiten, das sich aus dem zusammensetzt, was ich an der noch ausstehenden Zusammenführung gearbeitet habe. Gerade habe ich :
*master
user_story_1
user_story_1
hat eine offene Pull-Anfrage.
Jetzt versuche ich, einen neuen Zweig zu erstellen, user_story_2
in dem ich die Arbeit fortsetzen kann, von der ich noch übrig bin user_story_1
. Wie kann ich dies in Git tun, ohne in einen Konflikt zu geraten oder meine ausstehende Zusammenführung zu beeinträchtigen?
quelle
user_story_2
auf Folgendes stützenmaster
:git rebase --onto master user_story_1 user_story_2
- könnte zu Konflikten führen, wenn die beiden Zweige nicht vollständig unabhängig sind.git rebase -i master
, und es sollte eine Liste der Commits zumuser_story_2
Einschließen der früheren Commits von angezeigt werdenuser_story_1
. Entfernen Sie diepick
Zeilen für Commits aususer_story_1
und schließen Sie die Rebase ab.user_story_1
wurden zusammengeführt (und wahrscheinlich gelöscht), müssen Sie rebaseuser_story_2
aufmaster
. Es ist das gleiche Prinzip:master
Enthält jetzt alle Commits, die inuser_story_1
(plus dem Merge-Commit) enthalten waren. Es ist also praktisch das gleiche, als ob Sie nach dem Hinzufügen einesuser_story_1
weiteren Commits erneut eine Basis erstellt hätten . Zweige in Git sind nur eine Referenz (Think Pointer) auf ein Commit. Wenn Sie also auf einen Zweig zurückgreifen, wenden Sie Commits nur erneut auf ein neues Basis-Commit an (dasjenige, auf das der Basiszweig verweist).Mein bevorzugter Workflow dafür:
git checkout -b user_story_1
.user_story_1
.user_story_1
.user_story_1
,git checkout -b user_story_2
.user_story_2
.user_story_1
es mit dem Master zusammengeführt wurde, wechseln Sie zuuser_story_2
und tun Sie esgit rebase -i master
.user_story_2
anzeigen, die Sie in die Rebase aufnehmen möchten. Löschen Sie die obersten Commits, die von stammenuser_story_1
.user_story_2
Sie den Master neu aufgebaut und nur noch seine Commits.quelle
Erstellen Sie für jede Ihrer Storys / Features einen neuen Zweig vom Master.
Bevor Sie jeden Zweig wieder zusammenführen, führen Sie entweder den Master in diesen Zweig ein oder setzen Sie Ihren Zweig erneut auf den Master. Letzteres hat meine Präferenz, aber am Ende ist das Ergebnis das gleiche.
Sie werden Konflikte bekommen, daran führt kein Weg vorbei. Sie möchten jedoch Konflikte in Ihrer Branche lösen. nicht im Meister. Auf diese Weise können Sie Ihren Zweig testen, nachdem Sie die Konflikte gelöst haben, bevor Sie ihn mit dem Master zusammenführen.
quelle