2013-07-29 21 views
6

Voglio annullare tutti i commit di un autore specifico da 4 giorni fa. Come lo faccio?Ripristina tutti i commit di un autore specifico da un momento specifico

per ottenere tutti sha1s (con un po 'di rumore) posso usare questo:

git log --author=Mohsen --pretty=one --since=4.days 
+0

Se si utilizza GitHub, la vista di rete potrebbe essere in grado di mostrarvi in ​​cui è necessario 'git reset' a. Inoltre, vuoi 'revert' o' reset'? Sono un po 'diversi. – BlackVegetable

+0

Ci sono altri commit da altre persone. Non voglio resettare indietro – Mohsen

risposta

7

Devi dare format:%H-git log e utilizzare un ciclo:

for sha in `git log --pretty=format:%H --author=Mohsen --since=4.days`; do 
    git revert --no-edit $sha 
done 

Questo creerà uno commit per ripristino. Sopprimere l'opzione --no-edit per modificare in modo interattivo il messaggio di commit su ciascun ripristino.

O, se si vuole fare un grande Revert commit:

for sha in `git log --pretty=format:%H`; do sharange="$sharange $sha"; done 
git revert $sharange --no-commit 
git commit -m "reverted commits $sharange" 
+0

Grazie! Ma in realtà non si ferma quando c'è un conflitto. – Mohsen

+4

lo fa, se per un ripristino è presente un conflitto, verrai arrestato e potrai continuare con 'git revert --continue' – CharlesB

+0

Risposta straordinaria, ma ho bisogno di fare un po 'più di comandi. Devo accettare i loro cambiamenti se c'è un conflitto e se si tratta di un merge, devo usare "git revert $ sha -m 1;" puoi aiutarmi con esso? –

Problemi correlati