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

如何拉取倒数第二个或第N个Git提交而非最新提交?

如何拉取Git仓库中指定的旧提交?

嘿,我来帮你搞定这个问题!先看看你提供的git log输出:

commit d0fa4410393w92ce6ede2ea26fa2fb74z2e5f1bz (HEAD -> notificationControls, origin/notificationControls)
Author: stufezic-dev <ninjahero@gmail.com>
Date: Sat Sep 19 12:32:45 2020 +0545
lockscreen controls working, notification updates yet to fix
commit 2e11d85350a741d6992875e949a0a77abbeb8fde (mainadjust, commitBranch)
Author: stufezic-dev <ninjahero@gmail.com>
Date: Tue Sep 15 23:30:27 2020 +0545
notification and lockscreen controls using mediaSession: initiated
commit 2e11d85350a741d6992875e949a0a77abbeb8fde (mainadjust, commitBranch)
Author: stufezic-dev <ninjahero@gmail.com>
Date: Tue Sep 14 23:30:27 2020 +0545
notification and lockscreen controls using mediaSession: initiated
...

你提到只知道git pull master origin(正确写法是git pull origin master哦),想拉取倒数第二、第三或者任意指定的旧提交,其实Git没有直接的"拉取旧提交"命令,但可以通过两种简单方式实现,我给你详细说下:

第一步:定位目标提交的哈希值

每个提交都有唯一的哈希值(就是commit后面那串长字符),你可以通过git log直接查看,或者用git log --oneline输出更简洁的版本(只显示前7位哈希和提交信息),方便快速找到目标提交。

方法一:创建新分支指向目标提交(推荐!安全不破坏现有分支)

这种方式会新建一个分支,把代码切换到目标提交的状态,完全不会影响你当前的分支内容。命令格式如下:

git checkout -b 新分支名称 <目标提交的哈希值>

比如你想拉取倒数第二个提交(哈希是2e11d85350a741d6992875e949a0a77abbeb8fde),就运行:

git checkout -b old-notification-branch 2e11d85350a741d6992875e949a0a77abbeb8fde

执行完后,你就处于这个新分支上,代码就是该提交的状态了。

方法二:在现有分支重置到目标提交(谨慎使用!会覆盖最新内容)

如果你想在当前分支直接回到某个旧提交的状态,可以用重置命令,但要注意:这个命令会丢弃当前分支在目标提交之后的所有修改,所以如果有未提交的内容,一定要先备份或提交。命令格式:

git reset --hard <目标提交的哈希值>

比如要回到倒数第三个提交,就运行:

git reset --hard 2e11d85350a741d6992875e949a0a77abbeb8fde

另外补充下:你之前用的git pull origin master是拉取远程master分支的最新内容合并到当前分支,和拉取旧提交是完全不同的操作哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:02:31