執行下面這樣的repo命令就行了:
repo forall -c 'commitID=`git log --before "2017-03-17 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'
參數說明:
forall 操作分支中的所有倉庫
-c 只操作當前分支
--before 早於指定時間點的提交記錄
-1 只顯示最近的1條記錄(注意這是數字 1 ,如果要顯示 2 條就寫 2,以此類推)
"2017-03-17 07:00" 希望回退到的日期(時間點)
--pretty 以指定格式顯示提交記錄
%H 提交記錄的hash值,即commit id(其它格式及更詳細的信息可以使用命令git log --help打印幫助信息並查看“PRETTY FORMATS”小節)
命令含義:
這條repo命令的實質就是在當前分支的每個倉庫下執行git log
命令,找出該倉庫下符合時間條件的第一個提交記錄,然後對該倉庫執行git reset --hard
操作。就這麼簡單。