找回密码
 会员注册
查看: 20|回复: 0

Git撤销已合并提交的多种姿势

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
64116
发表于 2024-10-11 20:33:46 | 显示全部楼层 |阅读模式
#Git撤销已合并提交的多种姿势在Git中,合并分支是一个常见的操作,但有时候可能会意外地将错误的提交合并到了主分支。这时候需要撤销已合并的提交并恢复到正确的状态。本文将介绍的是如何在Git中撤销已合并的提交,无论这个提交记录是最新的还是中间的某一个。撤销最新合并的一次提交如果要撤销最新的合并提交,可以使用git revert命令来创建一个新的提交,撤销错误的变更。首先使用git log命令查看提交历史,找到最新的合并提交。$gitlogcommitc3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea(HEAD->master)Author:HanmeimeiDate:FriJun3015:26:432023+0800Incorrectmergecommitcommit3e5fb8a7b631eb6492ef32e28a813084d4d3de2bAuthorileiDate:ThuJun2918:20:562023+0800Correctcommit...在上面的示例中,大家可以看到最新的错误合并提交(Incorrect merge commit)。使用git revert命令撤销合并提交,并创建一个新的提交来还原到正确的状态。$gitrevertc3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532eaGit将自动创建一个新的提交,撤销错误的合并提交。使用git log或git show命令验证新的提交历史,确认错误的变更已经被撤销。$gitlogcommitb254d0f063b4ab4e7b78fb42015e0c55e0e98712(HEAD->master)Author:HanmeimeiDate:FriJun3015:46:282023+0800Revert"Incorrectmergecommit"Thisrevertscommitc3d2e9a4e2a1e285ff4d8f06e01d4e3f19b532ea.commit3e5fb8a7b631eb6492ef32e28a813084d4d3de2bAuthorileiDate:ThuJun2918:20:562023+0800Correctcommit...在这里可以看到一个新的提交(Revert "Incorrect merge commit")被创建,它撤销了最新的错误合并提交。撤销最新合并的多次提交如果要撤销最新合并的多次提交,可以使用git reset命令来回滚到某次提交。以下是步骤:首先使用git log命令查看提交历史,找到要回滚的哈希值。$gitlogcommitc5b890eee2edf9a353ec6bba0543e41d2529a8f8(HEAD->master)Author:HanmeimeiDate:MonJul315:12:102023+0800Incorrectmergecommitcommit82bcf43083a4dc8c87091ebde4dd5374f0c6e274Author:HanmeimeiDate:MonJul315:11:542023+0800Incorrectmergecommit2commit60a52b00d0ee2703156231e209e8aad115919aeeAuthor:HanmeimeiDate:MonJun2606:32:352023+0000Correctcommit...在这里需要回滚到(Correct commit)。使用git reset 命令撤销合并提交,并创建一个新的提交来还原到正确的状态。$gitreset--soft60a52b00d0ee2703156231e209e8aad115919aee//暂存区$gitreset--hard60a52b00d0ee2703156231e209e8aad115919aee//HEAD指向此次提交记录$gitpushoriginHEAD--force//强制推送远端注意:此次提交之后的修改不做任何保留,git status查看工作区是没有记录的。最后,使用git log或git show命令验证提交历史,确认错误的变更已经被撤销。$gitlogcommit60a52b00d0ee2703156231e209e8aad115919aee(HEAD->master)Author:HanmeimeiDate:MonJun2606:32:352023+0000Correctcommit...如果出现了误删,可以用以下办法来恢复:$gitreset--hard82bcf43083a4dc8c87091ebde4dd5374f0c6e274//误删的哈希值HEADisnowat82bcf4308feat:Incorrectmergecommit2$gitpushoriginHEAD--force//强制推送远端撤销中间合并某一个提交如果要撤销中间的某一个合并提交,可以使用git revert命令,并指定要撤销的提交哈希值。首先使用git log命令查看提交历史,并找到要撤销的中间合并提交。$gitlogcommit3e5fb8a7b631eb6492ef32e28a813084d4d3de2b(HEAD->master)AuthorileiDate:WedJun2112:00:002023+0000Correctcommitcommita1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0Author:HanmeimeiDate:FriJun1812:00:002023+0000Incorrectmergecommit...在这里可以看到一个中间的错误合并提交(Incorrect merge commit)。然后使用git revert命令撤销合并提交,并创建一个新的提交来还原到正确的状态。$gitreverta1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0Git将自动创建一个新的提交,撤销错误的合并提交。最后使用git log或git show命令验证新的提交历史,确认错误的变更已经被撤销。$gitlogcommitb254d0f063b4ab4e7b78fb42015e0c55e0e98712(HEAD->master)Author:HanmeimeiDate:MonJun2812:10:002023+0000Revert"Incorrectmergecommit"Thisrevertscommita1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0.commit3e5fb8a7b631eb6492ef32e28a813084d4d3de2bAuthorileiDate:WedJun2112:00:002023+0000Correctcommitcommita1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6k7l8m9n0Author:HanmeimeiDate:FriJun1812:00:002023+0000Incorrectmergecommit...可以看到之前的提交仍会保留在git log中,而此次撤销会做为一次新的提交(Revert "Incorrect merge commit")。注意在执行撤销操作之前,请一定要确保你了解操作的后果,并在进行任何更改之前创建备份或保存重要的数据。-END-关于奇舞团奇舞团是 360 集团最大的大前端团队,代表集团参与 W3C 和 ECMA 会员(TC39)工作。奇舞团非常重视人才培养,有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择,并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-26 12:49 , Processed in 5.579028 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表