如何在Mercurial中将commit 2单独变基(rebase)至master分支
解决Mercurial中误将commit2基于commit1的变基问题
没问题,我来帮你搞定这个Mercurial的提交历史修正问题!你需要把my commit 2从my commit 1的分支上剥离,直接放到master的末尾,同时保留my commit 1在原来的提交链上。具体操作步骤如下:
先确认提交哈希
先运行hg log查看提交历史,找到my commit 1和my commit 2的哈希值(用简短哈希即可,只要能唯一识别)。比如假设my commit 1的哈希是abc123,my commit 2是def456。确保master分支是最新状态
先切换到master分支,同步远程仓库的最新更新(如果需要的话):hg checkout master hg pull -u执行变基操作
切换回包含my commit 2的分支,然后运行这条命令:hg rebase --dest master --base abc123参数解释:
--dest master:指定变基的目标分支是master,即把提交移到master分支的末尾--base abc123:以my commit 1为基准,意思是把基准之后的所有提交(这里就是my commit 2)从基准上拆下来,重新挂到master分支上。
如果你当前正好处于
my commit 2所在的分支,还可以用相对引用简化命令:hg rebase --dest master --base ^这里的
^代表当前提交的父节点,也就是my commit 1。验证最终提交历史
再次运行hg log查看提交链,你会看到符合预期的结果:history1 --> history2 --> ... --> master --> my commit 2而
my commit 1会保留在原来的提交链上(基于之前的master历史)。
注意事项
- 如果
my commit 2和master分支的代码存在冲突,Mercurial会提示你解决冲突,完成冲突解决后运行hg rebase --continue即可完成变基操作。 - 若你已经将这些提交推送到远程仓库,变基后需要执行强制推送(
hg push -f),但这会改写远程仓库的提交历史,如果你和其他开发者协作,一定要提前沟通确认,避免影响团队的代码同步。
内容的提问来源于stack exchange,提问作者WhatABeautifulWorld
相关产品推荐
相关产品推荐

