2013-07-02 14 views
9

I am on master. Quando faccio lo stato GIT mi viene dettogit sposta localmente le modifiche apportate al nuovo ramo e spinge

$ 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 

Quindi tutti e 13 esistono solo sulla mia macchina locale. Il problema è che questi 13 commit ora dovrebbero andare su un nuovo ramo che dovrei creare e spingere sul server. Ho provato guardando rebase, ma mi è stato detto

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

Come potrei fare per spingere questi cambiamenti in un nuovo ramo senza rovinare il padrone?

Giusto per chiarire. Questo non è un duplicato di
moving committed (but not pushed) changes to a new branch questo semplicemente non funziona per me, non importa quello che faccio.
o
Git: Howto move changes since last commit to a new branch di nuovo non è di aiuto.

+0

si prega di riformulare la domanda di spiegare il motivo per cui l'ultimo anello non è la soluzione del problema, come lo è sicuramente per quello che ha affermato. –

+0

@BalogPal Perché ha a che fare con una sola modifica anziché 13 modifiche, quindi ho pensato che sarebbe stato diverso. Se non lo è, allora lo farò volentieri, scusarmi e chiudere/eliminare questa domanda. Dovrei provare? I cambiamenti sono di 2 mesi di lavoro e non posso permettermi di perderlo. – Quillion

+0

Nella domanda dici "questi 13 commit devono ora andare". Se in realtà vuoi solo uno o un paio, dovresti chiederlo; se hai i tuoi impegni è davvero difficile perdere qualcosa in git. ma siccome permette molti modi e molti approcci, devi essere preciso nel chiedere. probabilmente se tu avessi descritto lo stato risultante saremmo in vantaggio –

risposta

31

Basta fare git checkout -b yourbranch e spingere quello.

Quindi ripristinare il master in origine/master.

ordine:

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

Allora: 1) 'git checkout -b mybranch' 2)' git push' 3) 'ripristinare git --hard origine/master' e questo è tutto? – Quillion

+2

prima di 3) git checkout master –

+0

ATTENZIONE: questa sequenza non ha funzionato per me. Invece di spostare il "13" nuovo commit locale su una nuova diramazione mantenendo intatto il telecomando, almeno alcune delle modifiche recenti che volevo solo sul nuovo ramo appaiono in master (o si sviluppano nel mio caso). Non penso che questo fosse ciò che intendeva OP. –

Problemi correlati