2017-03-09 7 views
0

Ich reversed einige Zweig X zu develop, aber ich habe es nicht (remote Repo weiß nicht über Rebasing).Rebasing, einige Änderungen lokal und neue remote commits

Als nächstes habe ich einige Änderungen vorgenommen. Gleichzeitig hat mein Kollege etwas Druck gemacht, sich zu entwickeln.
Ich möchte jetzt auch (nach meiner lokalen Rebase und einigen Änderungen) Push entwickeln. Außerdem möchte ich diese Rebase reduzieren und zu genau einem Commit wechseln (ich weiß über squash, aber ich kann es in diesem Fall nicht verwenden).

Was soll ich tun? Ich denke, dass etwas in der Art:

git add --update 
git commit -m "rebase + my changes" 
git fetch develop 
git rebase origin/develop 
(solving potential conflicts) 
?git commit? 
git push 

Bin ich richtig?

+0

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) –

Antwort

0

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.

Verwandte Themen