cherry-pick使用

cherry-pick命令详解

无论项目大小,当你和一群程序员一起工作时,处理多个 Git 分支之间的变更都会变得很困难。有时,与其把整个 Git 分支合并到另一个分支,不如选择并移动几个特定的提交。这个过程被称为 “挑拣”, 即 Cherry-pick。

详细流程

  • 拉取远程变更到本地分支。使用 git fetch 远程源,在IDEA中可以设置多个远程分支。
    在这里插入图片描述
  • 回到要合并的分支。你可能会通过运行 git checkout 工作的分支 来做到这一点。
  • 找到要拉入分支的提交。转到 git log,为每条提交获取唯一的提交哈希值。
    • 找到你想要挑选的hash值
  • “Cherry-pick” 您想要加入该分支的提交。运行以下命令:git cherry-pick 。这将只把这个提交拉入当前分支。
  • (可选) 在某些情况下, 可能需要手动解决冲突.
  • 像往常一样推送这个分支: git push 远程源 分支名

具体命令

在 cherry-pick 命令的最简单形式中,你只需使用要集成到当前 HEAD 分支中的提交的 SHA 标识符即可。

要获取提交哈希值,可以使用 git log 命令:

git log --oneline

知道 commit 的哈希值后,就可以使用 cherry-pick 命令。

语法如下:

git cherry-pick <commit sha>

可以是多个

例如:

git cherry-pick  85c5532

这将把指定的更改专用于当前已签出的分支。

如果你想做进一步修改,也可以指示 Git 在你的工作副本中添加提交改动。

语法如下:

git cherry-pick <commit sha> --no-commit

如:

git cherry-pick 85c5532 --no-commit

如果您想同时选择多个提交,请添加它们的提交哈希值,中间用空格隔开:

git cherry-pick hash1 hash3

在挑选提交时,不能使用 git pull 命令,因为它会从一个版本库中获取提交并自动合并到另一个版本库中。cherry-pick 命令是专门用来避免这种情况发生的工具;取而代之的是使用 git fetch,它会获取提交但不应用它们。

实战

从 dev 挑选数个 commits 进行合并:

git cherry-pick  85c5532  366a196  53ebe44 --no-commits

然后, 可能第一个合并会出现冲突, 手动解决冲突, 并git add 具体文件或 git rm.

继续 cherry-pick:

git cherry-pick --continue

第二个提交可能没有冲突, 直接合并.

第三个提交可能又有冲突, 手动解决冲突, 并git add 具体文件git rm 文件

继续 cherry-pick:

git cherry-pick --continue

最后再执行 git cherry-pick --continue, 会提示你没有在运行的任务.

此时, 可以提交:

git push 远程源 分支名
### TortoiseGitcherry-pick使用教程 在 TortoiseGit 中,`cherry-pick` 功能允许用户将某个特定的提交应用到当前分支。以下是具体的操作方法: #### 1. 切换至目标分支 首先需要确保工作目录处于正确的分支下。如果希望将修复的 bug 合并到 `master` 分支,则需先切换到该分支。可以通过右键点击文件夹,在弹出的菜单中选择 **TortoiseGit -> Switch/Checkout...** 来实现分支切换[^3]。 #### 2. 查看提交历史记录 切换完成后,通过右键菜单中的 **Show Log** 打开提交日志窗口。此操作会展示所有的提交记录以及对应的哈希值(commit SHA)。找到需要 cherry-pick 的提交条目[^4]。 #### 3. 应用 cherry-pick 操作 在提交日志界面中选中要挑拣的提交项,随后右击该项并选择 **Cherry Pick this...** 菜单项。此时 TortoiseGit 将尝试将所选提交的内容复制到当前分支上。 如果有冲突发生,TortoiseGit 会提示解决这些冲突后再继续完成 cherry-pick 流程。一旦成功执行完毕,记得再次查看状态以确认更改已正确加入当前分支。 #### 4. 推送更新至远程仓库 当本地修改全部处理妥当后,还需同步最新的改动回远程服务器。这可通过依次执行 **Git Pull**, 然后是 **Git Push** 完成最终同步过程[^2]。 ```bash # 如果有未推送的变更,可运行以下命令手动推送到远端 git pull origin master git push origin master ``` 以上就是在 TortoiseGit 下面进行 cherry-pick 整体流程说明。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值