2013-07-29 14 views
6

Tüm işleri belirli bir yazar tarafından 4 gün önce geri almak istiyorum. Nasıl yaparım?Belirli bir yazarın tüm yayınlarını belirli bir zamana göre tersine çevirme

Bir döngü git log için format:%H vermek ve kullanmak zorunda
git log --author=Mohsen --pretty=one --since=4.days 
+0

, ağ görünümü için 'git reset' gereken yere size göstermek mümkün olabilir. Ayrıca, 'geri' veya 'sıfırlamak' istiyor musunuz? Onlar biraz farklı. – BlackVegetable

+0

Diğer kişilerden başka işlemler var. Geri sıfırlamak istemiyorum – Mohsen

cevap

7

:

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

Bu bir yaratacak

Bunu kullanabilirim (gürültü biraz) tüm sha1s almak için iade başına taahhüt. Her geri dönüşte taahhüt mesajını etkileşimli olarak değiştirmek için --no-edit seçeneğini kaldırın.

Veya, bir büyük geri alma yapmak istiyorsanız taahhüt: github kullanıyorsanız

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

Teşekkürler! Ancak çatışma olduğunda gerçekten durmuyor. – Mohsen

+4

, eğer bir geri dönüş için bir ihtilaf varsa, durdurulacak ve 'git revert --continue' – CharlesB

+0

Müthiş cevap ile devam etmesine izin verilecek, ancak biraz daha fazla komut yapmam gerekecek. Kabul etmem gerekiyor - bir çatışma varsa ve eğer birleşme varsa “git revert $ sha -m 1” i kullanmam gerekiyorsa, bu değişiklikleri bana yardımcı olabilir misiniz? –

İlgili konular