本文轉載自:https://blog.csdn.net/u011006622/article/details/70272087
執行下面這樣的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操作。就這么簡單。
注意事項: 命令里的單引號'以及`要注意區分! 前后兩個是單引號' 當中兩個是`
舉例: repo forall -c 'commitID=`git log --before "2017-04-15 07:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'