回退分支下所有git仓库的代码到某个时间结点之前


如果2025-8-21你不小心同步了最新的代码,但现在有一个需求,是让你验证8-13号之前的代码是否能够自测通过。


在大型项目中,8-13号到8-21号,可能会产生大量提交,这个时候你可能就会想到把所有git仓下的代码都回退到某个时间点之前,用git一个仓一个仓地回退会很费力,那么下面的命令就产生作用了

repo forall -c '
  commit=$(git log --before="2025-8-13 8:00:00" -1 --pretty=format:"%H" 2>/dev/null);
  if [ -n "$commit" ]; then
    echo "Resetting $(basename $(pwd)) to $commit";
    git reset --hard $commit;
  else
    echo "Skipping $(basename $(pwd)): No commit before 2025-8-13 8:00";
  fi'

它能够让代码状态回退到 2025-8-13 8:00:00之前,注意不包含指定时间点。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐