Die Reihenfolge der Befehle, die Sie angegeben haben, wäre eng, aber es wird kein einziges Commit für die lokalen Änderungen von rebase und local erstellt. Um zu beginnen, können Sie genauso gut abholen, und die folgenden Diagramme gehen davon aus, dass Sie Ihre Remote-Referenzen mit dem Remote-Repo synchronisiert haben. Wenn es also etwas gibt, das du nicht abgeholt hast, dann geh und hol es. Dann:
Es klingt wie Sie
A --- B --- C <--(develop)(origin/develop)
\
X1 --- X2 --- X3 <--(branch_x)
Weiter hat man von branch_x
umbasiert zu entwickeln (... so hoffentlich gab es keine Fern branch_x
?), Und jemand andere Änderungen geschoben zu entwickeln:
A --- B --- C --- D <--(origin/develop)
\
X1' --- X2' --- X3' <--(develop)
Und Sie haben einige weitere Änderungen von Ihrem lokalen develop
gemacht.
(Ihre vorgeschlagenen Befehlsliste beginnt mit add
und commit
so entnehme ich, die sind nicht einmal lokal noch inszeniert ...):
A --- B --- C --- D <--(origin/develop)
\
X1' --- X2' --- X3' <--(develop)
\
o <--WORKING TREE
So Sie X1'
, X2'
, X3'
, kombinieren und mit o
in ein einziges Commit, dessen Eltern ist D
, richtig?
Nun, um zu starten gehen Sie voran und verpflichten Sie Ihre lokalen Änderungen.
git add --update
git commit
(nicht sicher, warum Sie --update
verwenden, aber solange Sie bedeuten nicht, neue Dateien hinzufügen, es ist in Ordnung.)
A --- B --- C --- D <--(origin/develop)
\
X1' --- X2' --- X3' --- Y <--(develop)
Jetzt sagen Sie, Sie nicht tun können a squash
, aber es ist mir unklar, warum das sein würde. Es scheint mir, von hier aus die einfachste Sache
git checkout origin/develop
git merge --squash develop
# handle conflicts
git commit -m "rebase + my changes"
git branch -f develop
ist zu tun, die Sie
A --- B --- C --- D <--(origin/develop)
\
X1X2X3Y <--(develop)
gibt Und jetzt können Sie schieben.
Mögliche Duplikate von [Squash alle Ihre commits in einem, vor einem Pull-Request in GitHub] (http://StackOverflow.com/questions/31668794/squash-all-your-commits-in-one-before-a- Pull-Anfrage-in-GitHub) –