cherry-pick 时遇到冲突,代码改完后怎么继续?
我在 feature 分支上想 cherry-pick 主干的一个提交,结果提示有冲突。我手动改了冲突的文件,但不知道接下来该执行什么命令才能完成 cherry-pick?是不是还要 add 然后再 continue?
冲突的文件里原来有段逻辑是这样的:
function formatPrice(price) {
return <code>$${price.toFixed(2)}</code>;
}
我现在已经把冲突标记删了,也保留了正确的版本,但 git status 显示 still in cherry-pick state,卡在这儿了……
具体步骤如下:
1. 使用
git add <文件名>将解决冲突后的文件添加到暂存区。如果你解决了所有冲突,也可以使用git add .来一次性添加所有已解决冲突的文件。2. 然后执行
git cherry-pick --continue来继续 cherry-pick 过程。举个例子,假设你解决冲突的文件名为
priceUtils.js,那么命令应该是:这样就完成了 cherry-pick 的后续操作。如果在解决冲突后发现不需要继续这个 cherry-pick,也可以用
git cherry-pick --abort来取消整个过程。先把你改好的文件 add 进去:
然后继续 cherry-pick:
如果想保留原来的 commit 信息(通常建议保留),加个 --no-edit:
这样就完事了,cherry-pick 会用你保留的那个版本继续。
顺便说一句,你那个 formatPrice 函数改完之后记得测试一下,金额处理这种业务逻辑一旦出问题就是线上事故。手动解决冲突的时候很容易漏掉逻辑,尤其是这种涉及数值计算的。
如果中途后悔了,想放弃这次 cherry-pick,可以直接:
回到之前的状态。