2017-02-02 2 views
0

Es gibt einen Master-Zweig namens develop. Und ein Zweig (feature_branch_1) stammte aus der Entwicklungsbranche. Ich mache Änderungen in der feature_branch_1. Sagen wir, ich werde zwei Wochen lang an feature_branch_1 arbeiten. Und ich jeden Tag meine brauchen feature_branch_1 mit den Zweig Änderungen entwickeln synchronisiert ist (develop Zweig Änderungen von anderen begangen haben, und ich brauche, jene Änderungen haben, so dass meine feature_branch_1 wird nicht viel von der develop Zweig abgewichen werden und ich weiß, was in develop Zweig geschieht auch)So halten Sie eine Git Sub-/Feature-Zweig-Synchronisation mit einem Master-Zweig mithilfe von Rebase

ich versuchte git rebase develop für diesen Zweck wie unten zu verwenden,

git checkout develop 
git pull 
git checkout feature_branch_1 
git rebase develop 

zuerst war es gut, aber wenn machte ich mehr Änderungen an der feature_branch_1Rebasieren wird mehr Konflikte einführen. (Es sagt mein eigenes Commit Konflikte miteinander, Es ist kann bedeuten, dass zwei meiner Commits die gleiche Zeile in der gleichen Datei geändert, und Git weiß nicht, welche Änderung anwenden) Und Auflösung, die ist ziemlich viel schwierig und zeitaufwendig.

Mache ich es falsch mit Rebase? Wie kann ich meine feature_branch_1 mit dem develop Zweig synchronisiert ist immer (mindestens müssen innerhalb letzten 24 Stunden mit den neuesten Änderungen synchronisiert werden)

HINWEIS: ich auch andere verwandte SO Fragen geprüft. Ohne Verwendung von Rebase können wir das tun. unten wie

git checkout develop 
git pull 
git checkout feature_branch_1 
git merge develop 

und danach,

git push origin/feature_branch_1 

Ich kann dies jeden Tag tun und halten meine feature_branch_1 mit develop synchronisiert. Gibt es eine Möglichkeit, dies mit rebase zu tun, ohne dass meine eigenen Commits miteinander in Konflikt stehen?

+0

Die kurze Antwort ist nein, Sie können dies beim Rebasing nicht vermeiden.Die lange Antwort ist, dass Sie dies möglicherweise vermeiden können, indem Sie einfach "git merge" anstelle von rebase verwenden. Grob gesagt, ist die Reibung zwischen den Zweigen "develop" und "feature_branch_1" immer vorhanden und sollte sich unabhängig vom ausgewählten Arbeitsablauf manifestieren. –

+0

@TimBiegeleisen Also wäre es vielleicht keine gute Idee, Rebase für die Synchronisation zu verwenden. – prime

+0

Überhaupt nicht, eigentlich bevorzuge ich das Rebasing aus vielen Gründen. Aber das Synchronisieren wäre technisch etwas komplexer, man müsste sich gut mit Rebasing beschäftigen. –

Antwort

0

Ja, Sie haben Recht, es zu benutzen. Der Betrag der Konfliktdateien hängt von den Änderungen der zugehörigen Commits ab. Wenn sowohl develop als auch feature_branch_1 viele Dateien geändert werden, gibt es möglicherweise mehr Konflikte. Es gibt einen anderen Weg, um die gleiche Sache zu tun:

git checkout feature_branch_1 
git pull origin develop --rebase 

Dies wird Ihre machen feature_branch_1 basiert auf der neuesten develop Zweig.

Wenn Ihr feature_branch_1 viele Commits nach der letzten Synchronisierung mit dem Zweig "develop" aufweist, können Sie diese Commits vor dieser Zeitsynchronisierung komprimieren, sodass der Commitverlauf eindeutiger ist.

Um Rebase oder Zusammenführen zu verwenden, hängt es ab, ob Sie für das Hauptprojekt beitragen müssen. Rebase lässt Sie einfach an der neuesten Entwicklung arbeiten. Zweig und Zusammenführung können unsere Arbeit als Teil des Hauptprojekts machen.