Ho iniziato a lavorare sul mio ramo principale pensando che il mio compito sarebbe stato facile. Dopo un po 'ho capito che ci sarebbe voluto più lavoro e voglio fare tutto questo lavoro in una nuova filiale. Come posso creare un nuovo ramo e prendere tutte queste modifiche con me senza padrone sporco?Creazione ramo Git con modifiche correnti
risposta
Se non avessi ancora effettuato alcun commit, basterebbe solo (1: branch) e (3: checkout).
O, in un solo comando: git checkout -b newBranch
Come menzionato nel git reset
man page:
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation bellow)
$ git checkout topic/wip # (3)
- Hai fatto qualche commit, ma rendersi conto che erano prematuri per essere nel "
master
" ramo. Si desidera continuare a lucidarli in un ramo dell'argomento, quindi creare il ramo "topic/wip
" fuori dalloHEAD
corrente. - Riavvolgere il ramo
master
per sbarazzarsi di quei tre commit. - Passare al ramo "
topic/wip
" e continuare a lavorare.
Nota: per l'effetto "distruttivo" di un comando git reset --hard
(. Lo fa azzera l'indice e l'albero di impiego tutte le modifiche apportate ai file rilevate nella struttura opera dal <commit>
vengono scartati), avrei preferito andare con un:
$ git reset --soft HEAD~3 # (2)
, per assicurarsi che non sto perdendo alcun file privato (non aggiunto all'indice).
L'opzione --soft
non tocca affatto il file indice né l'albero di lavoro (ma reimposta la testina su <commit>
, come tutte le modalità).
Probabilmente vale anche la pena notare che questa non sarebbe una buona idea se si è impegnato materiale argomento per il proprio ramo master in un repository da cui provengono altre persone. O almeno, se hai bisogno di fare un reset devi dire alla gente che è quello che stai facendo in modo che gli avvertimenti del loro prossimo tiro non siano troppo di uno shock. –
In realtà non avevo ancora commesso alcun commit. Quindi, davvero facile, grazie amico – willcodejavaforfood
Nota per i futuri lettori: leggere dal basso verso l'alto (o essere sicuri di leggere l'intera cosa). 'git reset --hard' cancellerà le modifiche e se non sono state ancora eseguite sono irrecuperabili! Potresti aver bisogno di 'git checkout -b ...' –
Dal momento che non si è fatto alcun commette ancora, è possibile salvare tutte le modifiche apportate al nascondiglio, creare e passare a un nuovo ramo, poi pop questi cambiamenti nel vostro albero di lavoro:
git stash # save local modifications to new stash
git checkout -b topic/newbranch
git stash pop # apply stash and remove it from the stash list
o come VonC ha sottolineato 'git checkout -b newbranch' e salta lo stash – willcodejavaforfood
@will: stavo pensando che la creazione di un nuovo ramo avrebbe sovrascritto tutte le modifiche non salvate che avevi, ma se questo non è il caso, sì puoi saltare il riporre. – Ether
L'ho provato e ha funzionato bene, git è molto premuroso e non sovrascrive eventuali modifiche locali – willcodejavaforfood
Come dichiarato in questa domanda: Git: Create a branch from unstagged/uncommited changes on master: lo stash non è necessario.
Basta usare:
git checkout -b topic/newbranch
Qualsiasi lavoro non impegnati sarà presa insieme alla nuova filiale.
Se si tenta di spingere si otterrà il seguente messaggio
fatale: L'attuale funzione di ramo/NEWBRANCH non ha ramo a monte.Per spingere il ramo corrente e impostare il telecomando come monte, utilizzare
git push --set-upstream origin feature/feature/NEWBRANCH
Basta fare come suggerito per creare il ramo remoto:
git push --set-upstream origin feature/feature/NEWBRANCH
procedere come segue:
Creare una nuova filiale:
git branch newfeature
Checkout nuova filiale: (questo non ripristinerà il vostro lavoro.)
git checkout newfeature
Ora commettere il vostro lavoro su questo nuovo ramo:
git commit -s
Utilizzando i passaggi precedenti manterrà pulito il tuo ramo originale e non dovrai fare alcun 'reset git --hard'.
Cosa fa il "-s" nel passaggio 3? –
@ScottBiggs Non è necessario, ma è una pratica seguita da alcune persone. È [abbreviazione di "--signoff"] (https://git-scm.com/docs/git-commit) e aggiunge il tuo nome utente al commit per le persone future che guardano i log per sapere che hai autorizzato questo commit . –
Risposta piacevole, ma non c'è bisogno di '-s' nel passaggio 3. –
Per aggiungere nuove modifiche ad un nuovo ramo e spingere a distanza:
git branch branch/name
git checkout branch/name
git push origin branch/name
Spesso mi dimentico di aggiungere la parte all'origine di spingere e ottenere confuso perché non vedo la nuova filiale/impegno in bitbucket
- 1. Creazione di un ramo git dopo che le modifiche sono state apportate al master
- 2. Git: ottenere modifiche da un altro ramo
- 3. Creazione di un ramo git basato su un altro ramo
- 4. Git sovrascrittura matrimoniale con ramo
- 5. Git - Sostituire ramo locale con ramo remoto
- 6. Confronta il ramo git con il ramo rebased
- 7. git: modifiche al ramo da quando sono state create?
- 8. Git: Crea un ramo da modifiche nonstage/uncommitted sul master
- 9. Git che mi permette di cambiare ramo senza commettere modifiche
- 10. Git: controlla un ramo mantenendo le modifiche non modificate
- 11. GIT Tortoise - mostra le modifiche create nel ramo dopo l'unione
- 12. Git Merge - Non unire tutte le modifiche dal ramo remoto
- 13. Git: Ignora tutte le modifiche su un ramo locale divergente
- 14. GIT: aggiunta di modifiche locali a un ramo non corrente
- 15. Ramo di riutilizzo Git o eliminazione e creazione di nuovo
- 16. Git: Lista modifiche non unite tutte in git
- 17. modifiche di git stash perse
- 18. Spostare le modifiche apportate nel ramo di sviluppo in un nuovo ramo di funzionalità git-flow?
- 19. Alias Git sul ramo corrente
- 20. come confermare le modifiche al nuovo ramo
- 21. Differenza tra git checkout --track origine/ramo e git checkout -b ramo origine/ramo
- 22. Prendere tutte le mie modifiche sul ramo attuale e spostarle in un nuovo ramo in Git
- 23. Git Empty Commit senza modifiche
- 24. Aggiornamento di un ramo locale con le modifiche da un ramo remoto tracciato
- 25. Creazione tag ramo Git in VSO o VS2015
- 26. Come resettare un ramo su un altro ramo con git?
- 27. mostra commit dalla creazione del ramo
- 28. Git: fusione ma sovrascrittura delle modifiche
- 29. Utilizzando git, come si spostano alcune modifiche non salvate da un ramo a un altro ramo in una cartella diversa?
- 30. Git: come mantenere aggiornato il ramo di funzionalità locale con le modifiche apportate in dev?
possibile duplicato di [Spostare il lavoro esistente non impegnato in un nuovo ramo in Git] (http://stackoverflow.com/questions/1394797/move-existing-uncommited-work-to-a-new-branch-in -git) – Marijn
dup di http://stackoverflow.com/questions/2569459/git-create-a-branch-from-unstaged-uncommited-changes-on-master – andrej
grazie! anch'io! – Jonah