git merge、cherry-pick、onto回退、回滚

本文介绍了解决Git中撤销特定合并提交的问题,提供了三种方法:直接使用revert命令并指定-m参数;通过rebase命令和交互模式调整提交历史;或者采用cherry-pick选择性地应用所需的提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:
revert 撤销某次提交
git revert 100047dcc
error: Commit 100047dccb58f3ee5e27b0dfaf5c02ac91dc2c73 is a merge but no -m option was given.
fatal: revert failed

结果报错了,报了一个 Commit is a merge but no -m option was given. 为什么呢?
如果 100047dcc 这只是一个普通的提交,其实是不会报错的,但是,这是一个 merge 的提交。

git revert 100047dcc -m 1

方法二:
1,首先git log查看提交记录,找到出错的前一笔提交的commit_id

2,用命令git rebase -i commit_id ,查找提交记录

3,将出错那笔提交的pick改为drop

4,Esc,:wq

方法三:
git cherry-pick
1、git reset --hard 1d7444 #回退到出错版本前一个commit

2、git cherry-pick 626335 #将某次commit的更改应用到当前版本(将出错 cmmit 之后别人提交的代码合并到当前正常代码分支上)

3、git push origin HEAD --force #强制提交


cherry-pick 连续的commit
从f9e0e46c7005 开始 至 3b4c4c56c410
git cherry-pick f9e0e46c7005^…3b4c4c56c410


命令:git rebase --onto [Branch] [commit_id1] [commit_id2]

用法:有两个branch分支(branchA 和 branchB),需要将branchB中的某几个commit 合并到branchA中。

1、分支checkout到branchB

2、执行命令:git rebase --onto [branchA]  [commit_id1]  [commit_id2],此时branch处于游离状态(可以使用git branch查看分支)

3、执行命令:git checkout -b [new_branch] ,得到一个新分支new_branch,此分支即为想得到的分支

4、将new_branch合并到branchA上,即完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值