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. –
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. –