如何拉取倒数第二个或第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
相关产品推荐
相关产品推荐

