Quando ho accidentalmente eseguito il commit di un file nel ramo errato, di solito utilizzo git reset --hard HEAD~1
. Tuttavia, usando questo metodo generalmente perdo tutti i file impegnati. C'è un modo per resettare un commit, senza perdere i file modificati?Ripristina senza perdere i file già impegnati
risposta
non utilizzare --hard
utilizzare --soft
invece.
Pertanto, se si desidera rimuovere il vostro ultimo commettere faresti:
git reset --soft HEAD^
mentre Alex è molto corretto, potrei essere tentato di provare una sequenza diversa:
Se volevo il commit su un ramo ancora-a-essere-nato:
git branch newbranch
git reset --hard HEAD^
Se avessi voluto il commit su un ramo esistente:
git checkout otherbranch
git cherry-pick firstbranch
git checkout firstbranch
git reset --hard HEAD^
L'esempio completo della risposta di Alex
git reset --soft HEAD^
git checkout otherbranch
git commit -am "Message"
Nota l'ultimo esempio fallirà male se il tentativo di "galleggiare" il cambiamento per l'altro ramo non riesce a causa di conflitti. Dovrai quindi chiudere/chiudere/applicare per entrare nella risoluzione dei conflitti.
ottima risposta! Penso che questo sia solo il lancio di alcuni cambiamenti che sono stati fatti nell'ultimo commit e mantenendo l'altra metà. In tal caso, devi semplicemente buttare via il commit e aggiungere nuovamente le modifiche che intendi mantenere. in questo caso anche 'git add --interactive' potrebbe essere utile! – Alex
- 1. Ripristina i file di gestione temporanea ma non impegnati dopo 'git rm -rf'
- 2. Il file atomico salva su Linux senza perdere i metadati
- 3. Come scrivere dati con FileOutputStream senza perdere i vecchi dati?
- 4. Ripristina i file rimossi da Git checkout
- 5. onchange senza perdere la concentrazione?
- 6. Zip ultime modifiche impegnati
- 7. Come disinstallare Android Apk senza perdere dati?
- 8. Ridimensionare un'immagine con .NET senza perdere i dati EXIF
- 9. Ripristina DB SQL Server senza registro transazioni
- 10. x86_64 allinea lo stack e ripristina senza salvare i registri
- 11. BigQuery - filtraggio senza perdere 'null' valori
- 12. Ripristina/ripristina schema colori carattere Xcode predefinito?
- 13. Cambia tipo di colonna senza perdere dati
- 14. Come rimuovere i file dall'elenco di modifiche in modo forzato senza perdere le modifiche?
- 15. Come ridimensionare l'immagine senza perdere la qualità
- 16. Numpy fetta indice senza perdere informazioni dimensione
- 17. Ripristina MySQL auto_increment quando esiste già un numero elevato?
- 18. Come salvare automaticamente i file su perdere focus in Emacs
- 19. Aggiungi colonna in una tabella mappata utilizzando la sospensione, senza perdere i dati esistenti
- 20. Holder.js - Ripristina elemento DOM?
- 21. Magit ripristina il singolo file
- 22. Esiste un'attività ant che può copiare senza perdere le autorizzazioni
- 23. come trovo un elenco di file impegnati in un ramo?
- 24. Ripristina file cancellati da SourceTree o Git
- 25. Il file User.Settings ripristina i valori su ClickOnce Update
- 26. vim ripristina la posizione del cursore; escludere i file speciali
- 27. Come aggiungere TAG a una già impegnati in Git e Bitbucket
- 28. Ripristina transazioni per abbonamenti senza rinnovo senza registrazione
- 29. git ls-files: come identificare nuovi file (aggiunti, non impegnati)?
- 30. Routing MVC6 all'applicazione a pagina singola senza perdere 404
@cherrun, considera anche la lettura [Ripristina Demistificato] (http://git-scm.com/2011/07/11/reset.html). – kostix
+1 per una risposta breve e accurata. Per riassumere, utilizzare: 'git reset --soft HEAD ~ 1' – VarunPandey