2013-07-02 14 views
9

Ich bin auf master. Wenn ich git status mache, wird mir gesagtgit bewegen lokal festgeschriebene Änderungen an der neuen Filiale und drücken

$ git status 
# On branch master 
# Your branch is ahead of 'origin/master' by 13 commits. 
# (use "git push" to publish your local commits) 
# 
nothing to commit, working directory clean 

Also alle 13 existieren nur auf meinem lokalen Rechner. Das Problem ist, dass diese 13 Commits jetzt auf einen neuen Zweig gehen sollten, den ich erstellen und auf den Server schieben sollte. Ich habe versucht, auf rebase suchen, aber ich bin

sagte
$ git rebase origina/master 
fatal: Needed a single revision 
invalid upstream origina/master 

Wie würde ich diese Änderungen in einem neuen Zweig gehen zu drängen, ohne den Master vermasselt?

Nur um zu klären. Dies ist kein Duplikat von
moving committed (but not pushed) changes to a new branch dieser funktioniert einfach nicht für mich, egal was ich mache.
oder
Git: Howto move changes since last commit to a new branch ist wieder keine Hilfe.

+0

bitte die Frage anders formulieren zu erklären, warum das letzte Glied nicht die Lösung des Problems ist, wie es auf jeden Fall für die ist, die Sie angegeben. –

+0

@BalogPal Weil es mit nur einer Änderung statt 13 Änderungen zu tun hat, nahm ich an, dass es anders wäre. Wenn nicht, werde ich es gerne tun, entschuldige mich und schließe/lösche diese Frage. Soll ich es versuchen? Die Änderungen sind 2 Monate Arbeit und ich kann es mir nicht leisten, sie zu verlieren. – Quillion

+0

In der Frage sagen Sie "diese 13 Commits sollen jetzt gehen". Wenn Sie nur eines oder ein Paar wollen, sollten Sie danach fragen; Wenn Sie Ihre Verpflichtungen haben, ist es wirklich schwer, etwas in git zu verlieren. aber da es viele Wege und viele Annäherungen erlaubt, müssen Sie genau fragen. wahrscheinlich, wenn Sie den resultierenden Zustand beschrieben würden, wären wir voraus –

Antwort

31

Tun Sie einfach git checkout -b yourbranch und drücken Sie das.

Dann Master auf Ursprung/Master zurücksetzen.

Auftrag:

git checkout -b mybranch 
git push 
git checkout master 
git reset --hard origin/master 
+0

Also: 1) 'git checkout -b mybranch' 2)' git push' 3) 'git reset --hard Herkunft/master' und das ist es? – Quillion

+2

vorher 3) git checkout master –

+0

ACHTUNG: Diese Sequenz hat bei mir nicht funktioniert. Anstatt die "13" neuen lokalen Commits in einen neuen Zweig zu verschieben, der die Remote intakt hält, erscheinen zumindest einige der letzten Änderungen, die ich nur für den neuen Zweig wollte, im Master (oder entwickeln sich in meinem Fall). Ich denke nicht, dass dies das Ziel von OP war. –