Con SVN è facile unire inverso un commit, ma come farlo con Git?Git: come invertire-unire un commit?
risposta
Per creare un nuovo commettono che annulla l'operazione di '' i cambiamenti di un passato impegnano, uso:
$ git revert <commit>
E 'anche possibile in realtà rimuovi un commit da un punto arbitrario in passato rebasando e poi reimpostando, ma in realtà non vuoi farlo se hai già trasferito i tuoi commit in un altro repository (o qualcun altro ha tirato da te).
Probabilmente dovresti fornire l'opzione '-m
Jakub: questo è vero se si sta ripristinando un commit di unione, ma nella terminologia di Subversion, "reverse-merge" è in realtà semplicemente il nome per ripristinare qualsiasi tipo di commit. –
Notate che usare '-m' significa che una futura fusione dal ramo non unito non includerà le modifiche precedenti alla fusione! Vedi http://schacon.github.com/git/howto/revert-a-faulty-merge.txt per i modi adeguati di riunire nuovamente un ramo non unito. –
Se ho capito bene, si sta parlando di fare un
svn merge -rn:n-1
per tornare indietro di un precedente impegno, in questo caso, probabilmente siete alla ricerca di
git revert
Per annullare un commit di unione, è necessario utilizzare: git revert -m. Così, per esempio, per ripristinare il recente più fondono impegnarsi con il genitore con il numero 1 si usa:
git revert -m 1 HEAD
Per ripristinare un merge commit prima dell'ultima commit, si dovrebbe fare:
git revert -m 1 HEAD^
Usa git show <merge commit SHA1>
per vedere i genitori, la numerazione è l'ordine in cui appaiono ad es Merge: e4c54b3 4725ad2
git documentazione merge: discussione http://schacon.github.com/git/git-merge.html
git merge (confusione, ma molto dettagliato): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
Come si può ottenere il 'numero' associato al genitore? I rami hanno un 'id' numerico intrinseco? – daniyalzade
Usa 'git show
esempio:' git revert -m 1 SHA1' Questo comando ha funzionato per ripristinare un commit di unione che era più commit di commit prima della testa e aveva molti commit sotto. –
git reset --hard HEAD^
Utilizzare il comando precedente per ritornare unire le modifiche.
Questo elimina il commit unione, che non fa ciò che il poster originale sta chiedendo. L'OP sta cercando di eseguire una patch inversa per annullare le modifiche precedenti, non cancellare completamente la cronologia delle modifiche precedenti. –
Se non si vuole impegnare, o vogliono impegnarsi in seguito (messaggio di commit sarà ancora preparato per voi, che si può anche modificare):
git revert -n <commit>
- 1. Combina locale Git commit in un commit per git-svn
- 2. git commit -m vs. git commit -am
- 3. Come posso annullare un commit Git DOPO un git push?
- 4. Git - Cos'è un ID commit git?
- 5. git rebase un singolo commit
- 6. git: spingere un singolo commit
- 7. Come unire un commit specifico in Git
- 8. Come git commit un singolo file/cartella
- 9. Come posso cancellare un commit su git
- 10. Come posso "riaprire" un commit Git?
- 11. Come inserisco un commit usando git?
- 12. Intellij git revert un commit
- 13. Come eliminare git-notes commit?
- 14. Come "riaprire" l'ultimo commit Git?
- 15. Git esclude un commit in un ramo
- 16. ^M caratteri nel messaggio di commit git (git commit -v)
- 17. delete first git commit
- 18. Git submodule commit hooks
- 19. git commit fuso orario
- 20. Stampa messaggio di commit di un dato commit in git
- 21. git: rimuovere 2nd commit
- 22. Bad commit to Git
- 23. Git commit da python
- 24. Git Commit Genes 'Order
- 25. Lost Last Git Commit
- 26. Git push all commit come singolo commit con messaggio personalizzato
- 27. Git: commit modifiche parziali
- 28. rimuovere un referenziata commit dalla repository git
- 29. Git commit bash script
- 30. git commit problems
duplicati di [Ripristinare un Git commit precedente ] (http://stackoverflow.com/questions/4114095/revert-to-a-previous-git-commit) –
Non penso che questo sia il significato della domanda. Un'unione inversa in SVN ripristina anche le modifiche dal commit alle modifiche locali, quindi puoi modificarle e eseguire nuovamente il commit. – Dormouse