So che posso usare git commit --amend --file=path-to-my-new-message
ma questo modificherà anche le modifiche in scena. Certo, potrei mettere in serbo e successivamente applicare & rilasciare la scorta, ma c'è una soluzione più rapida per cambiare il messaggio di commit HEAD senza commettendo le modifiche graduali (e l'interazione dell'utente)?Git: cambia il messaggio di commit HEAD senza toccare l'indice
risposta
Secondo la pagina man git commit --amend --only
senza percorsi specificati dovrebbe fare il lavoro, ma questo non funziona per me. Come un work-around si può temporaneamente aggiungere un file e rimuoverlo di nuovo, che modifica due volte:
touch tmp
git add tmp
git commit --amend -m "new message" tmp
git rm tmp
git commit --amend -m "new message" tmp
Cool, questa sembra essere la soluzione migliore finora. – Mot
È possibile git rebase -i HEAD^
e quindi modificare pick
in reword
nell'editor aperto da git-rebase. Dopo questo ti verrà richiesto un nuovo messaggio di commit.
Ma questo toccherà sia l'indice che l'albero di lavoro. –
Il rebase interattivo non è un'opzione per me, perché il comando deve essere eseguito senza l'interazione dell'utente. – Mot
È possibile scrivere un nuovo messaggio di commit in un file (ad esempio msg.txt
) e utilizzare git commit-tree
, ad es.
new_head=$(git commit-tree HEAD^{tree} -p HEAD^ <msg.txt)
git reset --soft $new_head
Ciò presuppone che il commit si modificano ha un genitore, se non è necessario fornire ulteriori -p HEAD^2 -p HEAD^3 ...
.
È un po 'brutto e di basso livello. Potresti trovare più semplice memorizzare le tue modifiche e utilizzare un "emendamento" lineare.
git stash
git commit --amend
git stash pop --index
Come suggerisce @Jefromi, si potrebbe anche utilizzare un file indice temporaneo per la modifica il funzionamento, ad esempio,
GIT_INDEX_FILE=.git/tmpidx git reset
GIT_INDEX_FILE=.git/tmpidx git commit --amend
rm .git/tmpidx
Puoi scommetterci anche con GIT_INDEX_FILE, scommetto! Ma questo mi sembra più pulito. – Cascabel
Invece di HEAD ^, HEAD^2, ... posso utilizzare gli ID SHA dei commit principali del commit HEAD esistente? – Mot
@ Mike L .: Beh, sì, ma perché dovresti? 'HEAD^n' sta per essere più breve da digitare e non dovrai cercare. –
- 1. Cambia vecchio messaggio di commit su Git
- 2. commit git --amend senza chiedere per il messaggio
- 3. Comando Git per visualizzare ID commit HEAD?
- 4. Cambia messaggio di Git stash
- 5. git: cambia ramo e ignora qualsiasi modifica senza commit
- 6. ^M caratteri nel messaggio di commit git (git commit -v)
- 7. git format-patch senza commit
- 8. Come trovare git commit nel repository tramite messaggio di commit?
- 9. Git - Crea local HEAD il nuovo master
- 10. Cambia automaticamente il file di versione su commit con git
- 11. Stampa messaggio di commit di un dato commit in git
- 12. Git: unione conflitto e messaggio di commit
- 13. Modifica messaggio di commit errato in Git
- 14. git checkout e fondere senza toccare albero di lavoro
- 15. git: Mostra il messaggio dello scorso commit a commettere modello
- 16. Git: sposta HEAD di nuovo a un commit precedente
- 17. Come modificare il messaggio di commit di una git merge
- 18. Come risolvere il conflitto di git stash senza commit?
- 19. git: interrompi il commit al centro del messaggio di battitura
- 20. git am dovrebbe ignorare qualcosa nel messaggio di commit startwith "[]"?
- 21. Git Empty Commit senza modifiche
- 22. git unione senza auto commit
- 23. Git push all commit come singolo commit con messaggio personalizzato
- 24. Modifica del messaggio di commit Git in GitHub
- 25. Come ripristinare il commit git iniziale?
- 26. Git rebase cambia autore?
- 27. Come posso modificare il messaggio di commit di qualsiasi commit in git?
- 28. Git commette un messaggio di commit e nient'altro?
- 29. git commit -m vs. git commit -am
- 30. Unisci ramo GIT senza registro commit
Questa è una buona domanda, e scommetto che c'è un modo per farlo, ma dal momento che è una tale operazione I frequenti Suppongo che non ricorderò mai i parametri della riga di comando per farlo. Stash/amend/pop è probabilmente molto più pratico. –