git cherry-pick 和 rebase

本文介绍了Git中的cherry-pick和rebase操作。cherry-pick允许将一个分支的特定提交应用到另一个分支,避免了merge可能导致的分支历史丢失。而rebase则能将当前分支的改动整合到目标分支,使得历史线更简洁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cherry-pick

该方法可以用于将一个分支的提交在另一个分支复现一遍。
举个例子,当不小心在test分支上编写了新功能,并commit后,虽然新功能无误,但是自己的工作分支mywork却没有新功能,则此时可以采用cherry-pick方法.即首先查出在test分支上提交新功能的commit版本号,然后checkout到mywork分支,然后使用git cherry-pick <commit版本号>.来将新功能添加进test分支即可.原理如下图:

  • test上添加新功能:
    在这里插入图片描述
  • 使用cherry-pick后的分支情况:
    在这里插入图片描述
    这样就至少可以保证不用采用merge带来的分支丢失.

rebase

使用rebase操作,可以把当前分支的改动全部加入到目标分支当中,具体的图示关系如下:
使用rebase之前:
在这里插入图片描述
使用git checkout mywork;git rebase test后,状态如下图所示:
在这里插入图片描述

### `git rebase` 的使用 `git rebase` 是 Git 中用于重新应用提交到不同基点的命令。它常用于将一个分支的更改整合到另一个分支中,同时保持线性历史记录。这种操作在开发个人分支并希望将其更新到最新主分支时非常有用。 要执行 `rebase` 操作,可以使用以下命令: ```bash git checkout feature-branch git rebase main ``` 如果在 `rebase` 过程中遇到冲突,Git 会暂停并在冲突文件中标记出问题区域。解决冲突后,需要添加已解决的文件,并继续 `rebase` 流程: ```bash git add <resolved-file> git rebase --continue ``` 若想跳过当前冲突提交,可使用 `git rebase --skip`;如需取消整个 `rebase` 操作,则使用 `git rebase --abort` [^4]。 对于更复杂的场景,例如想要修改特定的历史提交或调整提交顺序,可以使用交互式 `rebase`。通过指定要编辑的提交范围来启动交互模式: ```bash git rebase -i HEAD~5 ``` 这将打开一个文本编辑器,列出最近五次的提交。在此界面中,可以通过改变每行前的操作指令(如 `pick`, `edit`, `squash` 等)来决定如何处理每个提交。 ### `git cherry-pick` 的使用 `git cherry-pick` 命令允许开发者将某个特定提交从一个分支复制到另一个分支上。这对于只希望合并部分更改而不是整个分支的情况很有帮助。 基本用法如下所示: ```bash git checkout target-branch git cherry-pick <commit-hash> ``` 这里的 `<commit-hash>` 是你想转移的那个提交的唯一标识符。一旦运行了这个命令,Git 将尝试将该提交引入当前检出的分支,并创建一个新的提交。如果存在冲突,同样需要手动解决,并且完成之后需要运行 `git add` 来标记冲突已解决,然后使用 `git cherry-pick --continue` 继续操作 [^3]。 ### 注意事项与最佳实践 - 在共享仓库或者公共分支上进行 `rebase` 操作应当谨慎,因为这会重写项目历史,可能导致其他协作者的工作出现问题。 - 使用 `cherry-pick` 时要注意确保所选提交是独立的,不会依赖于未被选取的其他更改,否则可能会导致构建失败或功能异常。 - 当面对简单的一对一提交迁移时,优先考虑使用 `cherry-pick`;而在需要维护清晰线性历史的情况下,尤其是个人开发分支向主干合并代码时,推荐使用 `rebase` [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值