Ho un po 'di git impiombato commette in mio figlio del nostro ramo master. Ho eseguito il rebase su un ramo di funzionalità e ho unito con successo i pochi conflitti che si sono verificati, ma non mi ero reso conto che rebase non mi avrebbe lasciato sul ramo delle funzionalità. Se ora vado a controllare il ramo della funzione, presumibilmente sovrascriverò i miei cambiamenti commessi nel mio albero di lavoro, lasciandoli in una specie di limbo. Potrei "git checkout -m", ma a quanto pare è solo per la fusione di modifiche locali senza commit. Come posso accedere al ramo della funzione e mantenere le modifiche non urgenti ma impegnate che attualmente ho sotto il ramo principale (senza doverle inserire nel ramo principale)? Dovrei aver usato git rebase -onto? Se sì, cosa dovrei fare ora che ho ribadito senza -onto?come spostare le modifiche in commit-but-unpushed in un altro ramo?
risposta
Si può fare in questo modo:
git checkout branch
alla cassa al ramo della funzione.git reset --hard master
per spostare il ramo allo stesso commit dimaster
in questo momento. In questo modo, perdi tutti i commit che si trovano nel ramo. A causa del tuo rebase, tutti questi commit dovrebbero avere copie sumaster
, quindi non dovresti perdere nulla.git checkout master
per il checkoutmaster
.git reset --hard origin/master
per reimpostaremaster
allo stato che si trova sul repositoryorigin
. Questo presuppone che tu non abbia avuto nessuna modifica imprevista amaster
. In tal caso, sostituireorigin/master
con l'ID di commit a cui si desidera ripristinare.
"si perdono tutti i commit che si trovano nel ramo ..." Non seguo questa parte. Il mio obiettivo è quello di mantenere i miei impegni imprevisti spostandoli sul ramo delle funzionalità. "questo presuppone che tu non abbia avuto modifiche non schiuse al master". Ancora una volta, i commit impuniti sono l'intera ragione per cui sto facendo la mia domanda. – BrianHoltz
Vedo che wat voglio fare è descritto nella pagina man di git-reset in "Annulla un commit, rendendolo un ramo di argomento". – BrianHoltz
La pagina di git man menzionata da BrianHoltz è qui: http://git-scm.com/docs/git-reset/2.0.0#_examples –
Prima di rideterminare la situazione per essere sicuro di aver capito correttamente. Hai effettuato alcuni commit su master
e volevi spostarli su feature
, quindi hai eseguito git rebase feature
? Per prima cosa, vuoi annullarlo. Supponendo che tu abbia ancora il master
controllato e che non abbia ancora effettuato alcun rebase, esegui git reset --hard ORIG_HEAD
per annullare il rebase.
Ora, per il modo corretto di spostare il tuo commit verso il ramo feature
. Marca e checkout di un ramo temporaneo, quindi non si scherza fino master
:
git checkout -b temp
Ora rebase tutte le modifiche apportate dopo l'ultimo commessi nei confronti origin/master
su feature
:
git rebase --onto feature origin/master
che muove il ramo temp
come se era ramificato da feature
. Ora per unire le modifiche sulla feature
, fare:
git checkout feature
git merge temp
git branch -d temp
Sarà una fusione fast-forward dal momento che solo Ribasato.
- 1. Spostare le modifiche apportate nel ramo di sviluppo in un nuovo ramo di funzionalità git-flow?
- 2. Git: ottenere modifiche da un altro ramo
- 3. Come devo spostare le modifiche da un commit a un altro?
- 4. Spostare un ramo in un nuovo tag
- 5. SVN - Unire un ramo in un altro?
- 6. Prendere tutte le mie modifiche sul ramo attuale e spostarle in un nuovo ramo in Git
- 7. In Mercurial, posso applicare le modifiche da un file a un altro file nello stesso ramo?
- 8. Utilizzando git, come si spostano alcune modifiche non salvate da un ramo a un altro ramo in una cartella diversa?
- 9. Git: Come spostare le modifiche dall'ultimo commit a un nuovo ramo
- 10. Come unire un ramo ad un altro ramo in GIT?
- 11. Come unire un file specifico da un ramo in un altro ramo in Git
- 12. Come unire il ramo gerrit ad un altro ramo gerrit
- 13. come confermare le modifiche al nuovo ramo
- 14. Subversion - come spostare alcuni changeset dal trunk a un ramo?
- 15. Come rebase le modifiche del ramo corrente in aggiunta alle modifiche in corso di integrazione?
- 16. Spostamento di modifiche locali in un ramo
- 17. Unisci tutte le modifiche da un altro ramo come singolo commit
- 18. Spostare un valore in un altro ambiente
- 19. Come duplicare un ramo in un altro ramo esistente in git
- 20. Come scartare tutte le modifiche apportate a un ramo?
- 21. git applica le modifiche da un commit su un altro ramo
- 22. Come posso ottenere modifiche dal mio bagagliaio in un ramo?
- 23. Carica le modifiche apportate in un altro DbContext
- 24. Spostare file/classe in un altro progetto
- 25. spostamento di file modificati in un altro ramo per il check-in
- 26. Ordina array e riflette le modifiche in un altro array
- 27. Da master, commit in un altro ramo
- 28. Spostare un file/directory, ma ancora unire facilmente le modifiche?
- 29. Come resettare un ramo su un altro ramo con git?
- 30. Git: controlla un ramo mantenendo le modifiche non modificate
Non un dupe. È un problema molto diverso con le modifiche che sono già state commesse, per non parlare di un rebase errato. –