2012-07-22 17 views
29

Ho stupidamente spinto un commit a GitHub con un nome di commit molto incasinato. Come posso cambiare questo?Come si rinomina un Git commit inviato a GitHub?

git commit --amend funziona ancora per il commit già premuto?

+0

Usa 'git commit --amend' seguito da' git spingere --force'. – vanza

+0

Non consiglierei 'git push --force'. Vuoi essere esplicito e forzare solo ciò che devi essere forzato. Ad esempio: 'git push --force origin specific-branch'. Puoi anche usare la forma breve di forza '-f'. Le forme brevi possono essere unite insieme come un'opzione. Per esempio. 'git push -uf origin mybranch' –

risposta

50
git commit --amend 

che porterà il vostro editor, o

git commit --amend -m "Your new message here" 

che vi permetterà di specificare il nuovo messaggio sulla riga di comando. Inoltre è possibile, ma più utile se avete altre impegna a riformulare

git rebase -i HEAD^ 
# then replace 'pick' with 'r' or 'reword' and save, editor should pop up again to edit the msg 

Perché questo impegno ha un nuovo SHA1 a causa del cambiamento dei contenuti, è necessario forzare spingere il nuovo riferimento. La forza è necessaria perché dice a Git di dimenticare il commit precedente. È una misura di sicurezza.

git push origin your-branch-name -f 
+3

Qualcosa da tenere a mente, se stai lavorando su un progetto di grandi dimensioni in cui qualcuno potrebbe aver già controllato il commit che stai sostituendo, quindi il loro lavoro in cima diventa molto difficile da unire –

+1

Se stai rinominando le cose, è davvero banale. Tutto ciò che devono fare è 'git fetch' e' git rebase origin/master' se si presuppone che stiano lavorando su master. Nessun conflitto in quanto non sono state modificate istantanee. –