git 在当前分支下提取某个其他分支的某些提交
首先,使用 `git log` 命令查找要合并的分支上的提交;git log --pretty=format:"%h %s" <分支名> //运行此命令后,将只显示每个提交的哈希值和提交备注。
确保你在要将提交合并到的当前分支上
git checkout <当前分支名>
使用 git cherry-pick
命令,将特定提交合并到当前分支上
git cherry-pick <提交哈希>
git cherry-pick <A> <B> //A和B都提交
git cherry-pick A..B //从 A 到 B 的所有提交,不包括A
git cherry-pick A^..B //从 A 到 B 的所有提交,包括A
解决合并冲突:打开包含冲突的文件,手动编辑文件解决冲突,在编辑文件时,选择保留需要的更改,并删除冲突标记。也可以在vs、vscode、TortoiseGit、sourcetree等软件中进行冲突处理;
解决冲突
使用 git add 命令标记为已解决
git add <冲突文件1> <冲突文件2> ...
完成合并
git cherry-pick --continue
接下来commit 或skip 结束 cherry-pick状态
git cherry-pick --skip
git cherry-pick --abort
注意:
git add file
处理完冲突到git cherry-pick --continue
时可能会进入一个vi
模式,如果对shell等相关命令不熟的话建议直接输入q退出;
也就是说我们在软件中处理完冲突后,不进行add
和cherry-pick --continue
操作;
下图为本地库中无add内容
而是直接使用git cherry-pick --skip
或git cherry-pick --abort
退出cherry-pick模式,返回到我们熟悉的正常的提交流程。
-
git cherry-pick模式没有退出的情况下是无法使用pull ,push这样的命令与远程交互的。
-
git cherry-pick --skip
与git cherry-pick --abort
git cherry-pick
命令用于将一个或多个提交从一个分支应用到另一个分支。有时,在进行 cherry-pick 操作期间可能会出现问题,需要中止或跳过操作。以下是关于 git cherry-pick --skip
和 git cherry-pick --abort
命令的解释:
git cherry-pick --skip
:- 当您在进行
git cherry-pick
操作时,如果出现冲突或其他问题,您可以使用git cherry-pick --skip
命令来跳过当前正在进行的 cherry-pick 操作。 - 这个命令告诉 Git 不再尝试应用当前的提交,而是跳到下一个提交,如果有的话。
- 这对于在进行一系列 cherry-pick 操作时,遇到无法解决的冲突或其他问题时很有用。
- 当您在进行
git cherry-pick --abort
:- 如果您在进行
git cherry-pick
操作时决定放弃当前操作,可以使用git cherry-pick --abort
命令。 - 这个命令将会取消当前正在进行的 cherry-pick 操作,恢复到操作之前的状态。
- 执行这个命令后,您将回到当前分支上,未应用的提交将保持未变。
- 如果您在进行
这两个命令只在进行 git cherry-pick
操作期间有效,用于管理 cherry-pick 过程中可能出现的问题。