You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub上回滚自特定日期起的过往提交?

在GitHub上回滚特定日期后的所有提交

第一步:获取目标日期对应的提交哈希

首先需要找到6月1日当天最后一个提交的哈希值,执行以下命令:

git log --before="2024-06-02" --pretty=format:"%h %s"

说明:--before="2024-06-02" 用于筛选6月1日及之前的提交(6月2日0点前即6月1日结束),输出结果里的短哈希(比如abc123)就是你需要的目标提交标识。


情况1:提交仅在本地,未推送到GitHub

如果要回滚的提交还没推送到远程仓库,直接执行硬重置:

git reset --hard abc123

说明:--hard 会将工作区、暂存区完全重置到目标提交状态,该日期后的所有提交会被丢弃,执行前请确认无需保留这些提交的内容。


情况2:提交已推送到GitHub远程仓库

方式A:强制重置远程分支(适合单人仓库或已沟通后的协作仓库)

  1. 先本地重置到目标提交:
git reset --hard abc123
  1. 强制推送到远程分支(以main分支为例):
git push origin main --force

注意:若仓库开启了分支保护,需先在GitHub仓库设置中取消保护才能执行强制推送;如果是多人协作仓库,强制推送前必须告知所有成员,避免他们的本地仓库出现冲突。

方式B:创建撤销提交(更安全,适合多人协作)

不破坏原有提交历史,通过新增一个反向提交来撤销所有更改:

  1. 批量撤销目标日期后的所有提交(暂不自动提交):
git revert --no-commit abc123..HEAD

说明:abc123..HEAD 表示从目标提交的下一个提交到当前最新提交的范围,--no-commit 会把所有撤销的更改放入暂存区。

  1. 检查更改无误后,提交撤销操作:
git commit -m "Revert all commits after 2024-06-01"
  1. 推送到远程仓库:
git push origin main

重要注意事项

  • 执行任何操作前,务必备份当前仓库:git branch backup-before-revert,以防操作失误可快速恢复。
  • 日期格式支持多种写法,比如"June 1 2024"、"2024-06-01 23:59:59",确保准确即可。

内容的提问来源于stack exchange,提问作者Shadrach Adamu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:07:13