2013-07-29 2 views
6

Я хочу вернуть все коммиты определенным автором с 4 дней назад. Как мне это сделать?Отменить все коммиты определенного автора с определенного времени

Чтобы получить все sha1s (с небольшим количеством шума), я могу использовать это:

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

Если вы используете GitHub, вид сети может быть в состоянии показать вам, где вам нужно для 'GIT reset' к. Кроме того, вы хотите «вернуть» или «перезагрузить»? Они немного разные. – BlackVegetable

+0

Есть другие коммиты от других людей. Я не хочу возвращаться назад – Mohsen

ответ

7

Вы должны дать format:%H для git log и использовать цикл:

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

Это создаст один фиксация за возврат. Подавить параметр --no-edit для интерактивного изменения сообщения фиксации при каждом возврате.

Или, если вы хотите, чтобы сделать один большой Revert совершить:

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

Спасибо! Но на самом деле это не происходит, когда есть конфликт. – Mohsen

+4

он делает, если для одного возврата существует конфликт, который вы остановите, и вам будет позволено продолжить с 'git revert --continue' – CharlesB

+0

Удивительный ответ, но мне нужно сделать немного больше команд. Мне нужно принять - их изменения, если есть конфликт, и если это слияние, мне нужно использовать «git revert $ sha -m 1;» можете ли вы мне помочь? –

Смежные вопросы