git 命令
1、将本地仓库的代码回退到指定的时间点
repo forall -c 'commitID=`git log --before "2022-07-26 00:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'
或者
repo forall -p -c 'git checkout `git rev-list -n 1 --before="5 days ago" HEAD`'
参数说明
forall 操作分支中的所有仓库
-c 只操作当前分支
–before 早于指定时间点的提交记录
-1 只显示最近的1条记录(注意这个数字是1,如果要显示2就写2,以此类推)
2022-07-26 00:00 希望回退到的日期(时间点)
–pretty 以指定格式显示提交记录
%H 提交记录的hash值,即commit id (其它格式及更详细的信息可以使用命令 git log --help 打印帮助信息并查看 “PRETTY FORMATS” 小节)
命令含义
这条repo命令的实质就是在当前分支的每个仓库下执行git log命令,找出该仓库下符合时间条件的第一个提交记录,然后对该仓库执行git reset --hard操作。就这么简单。
例如 回退到2022-12-28号,保留12-28号修改
xxxxxxxxxx repo forall -c 'commitID=`git log --before "2022-12-29 00:00" -1 --pretty=format:"%H"`; git reset --hard $commitID'