当前位置:   article > 正文

Git 精通之道:使用 Cherry-Pick 选择性合并提交的高阶指南

cherry-pick

想要分批分时间推送代码
做了大量修改后,想要将这些修改按功能或逻辑分开提交

git cherry-pick 允许你选择某个分支中的一个或多个提交(commits),然后将这些提交复制到当前分支上。这个命令非常适合在你只需要从另一个分支上获取某些特定更改,而不是整个分支内容时使用。

如何使用

基本的 git cherry-pick 命令格式如下:

git cherry-pick <commit-hash>
  • 1

其中 <commit-hash> 是你想要复制到当前分支上的提交的哈希值。哈希值可以通过 git log 命令查找。

示例步骤

假设你正在修复一个问题,发现在另一个分支上已经有了修复这个问题的提交,你希望将这个修复应用到你当前的分支上。你可以这样操作:

  1. 找到需要的提交的哈希值

    • 切换到包含所需提交的分支。
    git checkout other-branch
    
    • 1
    • 使用 git log 查找提交的哈希值。
    git log
    
    • 1

    在输出中,找到你想要的提交,并复制它的哈希值。

  2. 切换回你的工作分支

    git checkout your-branch
    
    • 1
  3. 使用 cherry-pick 应用该提交

    git cherry-pick <commit-hash>
    
    • 1

    <commit-hash> 替换为你在第一步中复制的哈希值。

高级用法

  • 应用多个提交:你可以一次性 cherry-pick 多个提交,只需要在命令中依次列出所有想要应用的提交的哈希值。

    git cherry-pick <commit-hash1> <commit-hash2>
    
    • 1
  • 应用一系列提交:如果你想要应用一个连续的提交序列,可以使用下面的语法:

    git cherry-pick <start-commit-hash>^..<end-commit-hash>
    
    • 1

    这会应用从 <start-commit-hash><end-commit-hash>(包含这两个提交)之间的所有提交。

注意事项

  • 冲突git cherry-pick 时可能会遇到冲突,就像合并时一样。如果发生冲突,Git 会停止应用当前的提交,并要求你解决冲突。解决冲突后,你需要使用 git cherry-pick --continue 来完成 cherry-pick 操作。
  • 使用场景:虽然 cherry-pick 很有用,但它改变了提交的上下文,有时可能会引起问题。因此,建议只在确实需要时使用,比如修复从其他分支提取特定的更改。

git cherry-pick 提供了一种灵活的方法来选择性地应用提交,有助于在分支间管理特定的更改。不过,要谨慎使用,以避免可能的冲突或混乱。


如果工作已经分在不同的提交上,且想要一次性推送一批提交,可以先将这些提交合并为一个(通过交互式 rebase),然后再推送。

git rebase -i HEAD~<number-of-commits>
  • 1

在交互式模式中,您可以选择将部分提交合并(squash)为一个。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/824508
推荐阅读
相关标签
  

闽ICP备14008679号