2013-07-29 11 views
6

Ich möchte alle Commits eines bestimmten Autors seit 4 Tagen wiederherstellen. Wie mache ich es?Alle Commits eines bestimmten Autors seit einer bestimmten Zeit zurücksetzen

Um alle sha1s (mit ein wenig Lärm) bekomme ich diese verwenden:

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

Wenn Sie Github verwenden, könnte die Netzwerkansicht der Lage sein, Ihnen zu zeigen, wo Sie zu 'git reset' müssen. Möchten Sie auch "zurücksetzen" oder "zurücksetzen"? Sie sind ein bisschen anders. – BlackVegetable

+0

Es gibt andere Commits von anderen Leuten. Ich möchte nicht zurücksetzen – Mohsen

Antwort

7

Sie haben format:%H-git log zu geben und eine Schleife verwenden:

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

erstellen Commit pro Rückstellung. Unterdrücken Sie die Option , um die Commit-Nachricht bei jedem Zurücksetzen interaktiv zu ändern.

Oder, wenn Sie einen großen revert machen wollen begehen:

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

Vielen Dank! Aber es hört nicht wirklich auf, wenn es einen Konflikt gibt. – Mohsen

+4

es tut, wenn für eine Rückstellung gibt es einen Konflikt, den Sie gestoppt werden und mit 'git zurückgehen können - weiter' – CharlesB

+0

Awesome Antwort, aber ich muss ein bisschen mehr Befehle darin tun. Ich muss akzeptieren - ihre Änderungen, wenn es einen Konflikt gibt, und wenn es Merge war, muss ich "git revert $ sha -m 1;" können Sie mir damit helfen? –

Verwandte Themen