Diciamo che ho 3 commit non premuti. Ora voglio cambiare il messaggio di commit del primo o del secondo commit (cambiarli per il terzo è semplice usando git commit --amend
). Come farlo?Come posso modificare il messaggio di commit di qualsiasi commit in git?
risposta
a rimbalzo sul sub-domanda: c'è un git commit --amend
per un commit precedente (e non solo l'ultima), si potrebbe provare qualcosa di simile (non ancora testato, ma Colin O'Dell menzioni in the comments aver scritto una sceneggiatura per esso colinodell/git-amend-old):
git checkout -b tmp
git reset --hard HEAD~2
git commit -amend
git rebase --onto tmp [email protected]{1} master
sarebbe come:
x---x---x---x---x
^
|
(master*) (* = current branch)
git checkout -b tmp
x---x---x---x---x
^
|
(tmp*, master)
git reset --hard HEAD~2
x---x---x---x---x
^ ^
| |
(tmp*) (master)
git commit -amend
y (tmp*)
/
x---x---x---x---x
| ^
([email protected]{1}) |
(master)
git rebase --onto tmp [email protected]{1} master
(tmp)
y---x'---x' (master*)
/
x---x---x---x---x (only referenced in reflog)
Nel 'rebase --onto', vedere http://stackoverflow.com/questions/1994463/how-to-cherry-pick-a-range-of-commits-and-merge-into-another-branch/1994491 # 1994491 – VonC
perché preoccuparsi? rebase -i è molto più semplice – CharlesB
@CharlesB: Sono d'accordo, 'rebase -i' è più semplice, ma anche * interattivo *. Ciò significa che non puoi includerlo in uno script o in un alias che raggruppa una sequenza di comandi. – VonC
Questo è un lavoro per il potente comando git rebase -i
. Inoltre, consulta la sezione Interactive Rebasing del libro Git.
Forse una domanda stupida, ma si può usare git rebase -i' in modo non interattivo? – Mot
No, non come tale. Comunque, tutto ciò che 'git rebase -i' può (in teoria) può essere fatto usando altri comandi Git scriptable. Quindi sarebbe possibile scrivere uno script per modificare un precedente messaggio di commit, ma non so se una cosa del genere esiste ancora. –
congratulazioni sul tuo 15esimo distintivo d'oro;) Ora sei un vero idiota! (Err ... git-guru, intendevo) (voglio dire, guru riguardo al nome dello strumento git) (voglio dire, capisci cosa intendo) – VonC
- 1. Come modificare il messaggio di commit di una git merge
- 2. Stampa messaggio di commit di un dato commit in git
- 3. ^M caratteri nel messaggio di commit git (git commit -v)
- 4. Modifica messaggio di commit errato in Git
- 5. Come trovare git commit nel repository tramite messaggio di commit?
- 6. Git: Come posso modificare il commit del server?
- 7. Cambia vecchio messaggio di commit su Git
- 8. Come posso modificare un messaggio di commit errato con TortoiseGit?
- 9. Git: unione conflitto e messaggio di commit
- 10. Git push all commit come singolo commit con messaggio personalizzato
- 11. Modificare il messaggio di commit SVN in modo retroattivo?
- 12. git posso accelerare il commit?
- 13. Come modificare la data di commit in upstream in Git?
- 14. Come posso modificare i commenti predefiniti nel messaggio di commit git?
- 15. Modifica del messaggio di commit Git in GitHub
- 16. Come modificare o modificare il messaggio su un commit prima di inviarlo
- 17. Dimensione massima messaggio di commit
- 18. Git: cambia il messaggio di commit HEAD senza toccare l'indice
- 19. Come posso eseguire il backport di un commit in git?
- 20. git commit -m vs. git commit -am
- 21. git: interrompi il commit al centro del messaggio di battitura
- 22. commit git --amend senza chiedere per il messaggio
- 23. Come posso "riaprire" un commit Git?
- 24. Come fornire un messaggio di commit git preparato?
- 25. Come catturare un messaggio di commit git ed eseguire un'azione
- 26. Modificare un commit che non era il commit precedente
- 27. Modifica del messaggio di commit Git fatto prima di un'unione
- 28. Leggi l'ultimo commit del git e il numero di commit
- 29. Link messaggio di commit Github
- 30. Come fare riferimento a un commit precedente nel messaggio di commit git
che è un po 'simile a http://stackoverflow.com/questions/3926768/amend-a-commit-that-wasnt-the -precedente-commit. Ho provato (sotto) per vedere come un 'commit --amend' potrebbe essere scriptato. Fammi sapere se funziona. – VonC