✅ 使用 Git 按时间查看提交并回退到指定时间点(以今天早上 8 点为例)
在日常开发中,我们有时会需要将仓库恢复到某个具体时间点之前的状态,比如「回退到今天早上 8 点前的最后一次提交」。这篇文章记录一次完整的实操过程,供自己备忘,也希望能帮到遇到类似需求的小伙伴。
🧭 场景说明
我在本地对一个 Git 仓库做了若干提交,想要回退到 今天(2025-04-16)早上 8 点前的状态。目标是找出那个时间点前的最后一次提交,并让本地及远程仓库都同步回退。
✅ 按时间查看提交并回退
第一步:查看某段时间内的提交记录
打开终端,进入项目目录后,执行如下命令:
git log --since="2025-04-15 22:00" --until="2025-04-16 08:00"
这条命令会列出从昨天晚上 10 点到今天早上 8 点之间的所有提交。你可以根据实际需要调整 --since
和 --until
的时间。
我得到的输出如下:
commit ecb4a5c5c7479e415f58bf2a714da9b2d6678698
Author: root <534640040@qq.com>
Date: Tue Apr 15 23:03:12 2025 +0800
文章分享设置
第二步:使用 git reset
回退到该提交
确认这个提交就是你要回退到的那个版本后,执行以下命令:
git reset --hard ecb4a5c5c7479e415f58bf2a714da9b2d6678698
这一步会让你的本地仓库彻底回到该提交的状态。
第三步:推送回退结果到远程仓库(需要取消受保护分支)
当我尝试执行以下命令时:
git push origin HEAD --force
遇到了以下报错:
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
error: failed to push some refs to 'http://192.168.31.63:8081/root/blog.git'
✅ 解决办法:
-
打开浏览器访问 GitLab 仓库设置页面:
http://192.168.31.63:8081/root/blog/-/settings/repository
-
找到 Protected Branches(受保护分支) 配置,点击
Unprotect
解保护main
分支。 -
然后再次执行:
git push origin HEAD --force
这时候就可以把回退的版本同步到远程仓库了 ✅
第四步:其他电脑同步仓库(很关键)
在其他设备或开发者电脑上,如果已经 clone 了项目并需要同步这次回退操作:
git fetch origin
git reset --hard origin/main
如果担心本地有未保存的内容被覆盖,也可以先备份一下:
git checkout -b backup-before-reset
git fetch origin
git reset --hard origin/main
✅ 小结
整个过程用到的关键命令如下:
git log --since="时间" --until="时间" # 按时间查看提交记录
git reset --hard 提交ID # 回退到指定提交
git push origin HEAD --force # 强制推送到远程(需取消保护)
git fetch origin && git reset --hard origin/main # 其他电脑同步远程
🧠 补充建议
- 如果你在团队协作中要回退主分支,请务必 沟通确认,以免影响他人。
- 如果担心误操作,可以用
checkout
搭配-b
创建新分支试验:git checkout -b test-revert ecb4a5c...
本文作者: 永生
本文链接: https://yys.zone/detail/?id=404
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
发表评论
评论列表 (0 条评论)
暂无评论,快来抢沙发吧!