In questo post, vedremo come eliminare i commit da un ramo Git.,et
L’idea è per forza ripristinare la directory di lavoro per rimuovere tutti i commit che vengono dopo che il specificato commit e poi fare una forza di spinta:
1
|
git reset –hard
|
Si può fare riferimento a un commit attraverso la sua discendenza, o usando a pieno hash SHA-1, o con il parziale di hash che dovrebbe essere di almeno 4 caratteri e inequivocabile.,
1
2
3
4
|
# Scartare i primi 4 commit
git reset –TESTA dura~4
|
Se questi invii sono presenti nel repository remoto, è necessario per forza di spingere l’hard reset al repository remoto.,
1
2
3
4
|
# Force Push updates to the remote repository
git push
|
Here’s a live example:
Note, that any changes made in the working directory since the last commit are silently discarded., Per evitarlo, riponi prima le tue modifiche locali chiamando il comandogit-stash
che a sua volta ripristina anche la directory di lavoro alla revisione HEAD
dopo aver salvato le tue modifiche locali. git reset --hard HEAD
viene spesso utilizzato per eliminare tutte le modifiche non committed per abbinare il commit più recente nella directory di lavoro.
Nel caso in cui si desideri mantenere il proprio lavoro e annullare solo il commit, è possibile utilizzare l’opzione --soft
.,
1
|
git reset –soft
|
This is demonstrated below:
git revert
It is not a good idea to do a force push on a public or a shared repository; do a git-revert
instead., Crea un nuovo commit che annulla tutte le modifiche apportate nel commit specificato, quindi lo applica al ramo corrente.,iv id=”e6e72cc751″>
Here’s a live example:
Interactive Rebasing
Another plausible way of removing comments is using git-rebase
command.,
1
|
git rebase-i
|
Esecuzione di comando di cui sopra si aprirà un editor con tutti i commit nel ramo attuale, che vengono dopo che il specificato commit. Per eliminare un commit, è sufficiente sostituire il comando ‘pick’ con ‘drop’ e chiudere l’editor. Puoi anche semplicemente eliminare la riga corrispondente.,
Il seguente comando rimuoverà un intero commit e78d8b1
in una volta usando --rebase-merges
con --onto
opzione.,
1
|
git rebase -r –onto e78d8b1^ e78d8b1
|
(20 votes, average: 5.,00 su 5)
Grazie per la lettura.