`

git merge vs rebase vs cherry-pick

阅读更多
git merge是用来合并两个分支的。



# 将b分支合并到当前分支
git merge b

git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作。例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0 中的功能到v2.0中,这里就可以使用cherry-pick了。

# 先在v3.0中查看要合并的commit的commit id
git log
# 假设是 commit f79b0b1ffe445cab6e531260743fa4e08fb4048b

# 切到v2.0中
git check v2.0

# 合并commit
git cherry-pick f79b0b1ffe445cab6e531260743fa4e08fb4048b

git rebase有点类似git merge,但是两者又有不同,打个比方,你有两个抽屉A和B,里面都装了衣服,现在想把B中的衣服放到A中,git merge是那种横冲直撞型的,拿起B就倒入A里面,如果满了(冲突)再一并整理;而git rebase就很持家了,它会一件一件的从B往A中加,会根据一开始放入的时间顺序的来加,如果满了你可以处理这一件,你可以继续加,或者跳过这一件,又或者不加了,把A还原。所以merge适合那种比较琐碎的,简单的合并,系统级的合并还是用rebase吧。

专业的区别请移步到这里合并和衍合

# 合并b
git rebase b

# 处理完冲突继续合并
git rebase --continue

# 跳过
git rebase --skip

# 取消合并
git rebase --abort
分享到:
评论

相关推荐

    Git-2.24.0.2-64-bit.zip

    在协作环境中,Git的特性如代码审核(`git rebase`和`git cherry-pick`)、分支策略(如特性分支和主分支)以及冲突解决机制,都有助于团队成员有效地协同工作。同时,Git与GitHub、GitLab等平台的结合,提供了代码...

    git cherry-pick 简单使用md,学习代码

    # Git Cherry-Pick 简单使用指南 Git 是一个分布式版本控制系统,...结合附带的图片(assets\rebase-1.png, assets\rebase-2.png, assets\rebase-3.png),可以更直观地理解 `cherry-pick` 在实际操作中的流程和效果。

    Git-2.27.0-64-bit_2.exe.zip

    Git是当今最流行的分布式版本控制系统,它被广泛用于软件开发,尤其是开源项目。...随着熟练程度的提高,开发者还可以掌握更高级的技巧,如`git rebase`、`git cherry-pick`和`git stash`等,以提升工作效率。

    test-git-merge-cherry-squache

    标题 "test-git-merge-cherry-squash" 暗示了这个压缩包可能包含一个与Git操作相关的示例或教程,特别是关于`git merge`、`git cherry-pick`和`git squash`的实践。Git是分布式版本控制系统,这些命令在版本管理和...

    详解git merge 与 git rebase的区别

    Git 是一个分布式版本控制系统,它提供了两种合并分支的策略:`git merge` 和 `git rebase`。两者都是为了整合不同分支的更改,但它们在处理合并的方式上有显著的差异。 ## Git Merge `git merge` 是最常见的合并...

    Git-2.37.0-64位windows安装包

    - ** cherry-pick**:将一个分支的特定提交应用到另一个分支。 - **rebase**:平滑分支历史,将本地提交重新基于最新的上游分支。 6. **Git命令行技巧**: - `git status`查看工作区和暂存区的状态。 - `git ...

    Git-2.14.1-win-64-bit.rar

    - **cherry-pick**:将某个提交应用到另一个分支。 - **reset**:回退到某个提交,可以改变当前分支的 HEAD 指向。 - **merge --no-ff**:不使用快速合并,保留合并提交的历史记录。 5. **在Windows上的Git**: ...

    Git-2.17.1.2-64-bit

    除了基本命令,Git还提供了许多高级特性,如 stash(暂存未提交的更改)、rebase(平滑分支历史)、cherry-pick(选择性应用其他分支的提交)以及tag(标记特定版本)。这些工具帮助开发者更好地管理代码版本,尤其...

    Git-2.28.0-64-bit git安装包windos64位官方下载

    3. **Cherry-pick**:`git cherry-pick`可以将某个特定的提交应用到其他分支,用于共享或复制功能。 4. **Submodule**:Git的子模块功能允许你在项目中嵌入其他Git仓库,便于管理依赖的项目。 以上就是关于Git-...

    Git-2.37.2.2-64-bit

    Git还支持许多高级功能,如子模块(用于管理项目的依赖)、标签(用于标记重要版本)、rebase(平滑分支历史)、cherry-pick(从一个分支选择特定提交应用到另一个分支)等。对于大型项目和团队来说,了解并熟练使用...

    Git-2.31.1-64-bit.rar

    除了基本的命令,Git还提供了许多高级功能,如交互式暂存(`git add -i`)、 stash(用于暂存未完成的更改)、rebase(平滑地合并分支历史)和cherry-pick(从另一个分支挑选特定的提交应用到当前分支)等。...

    Git官方最新版下载 Git-2.18.0-64-bit 64位Windows版本

    - `git cherry-pick`:从一个分支挑选特定的提交应用到另一个分支。 - `git blame`:查看每一行代码是谁在何时修改的。 6. Git与GitHub、GitLab等平台的结合: - GitHub、GitLab等提供了基于Git的代码托管服务,...

    Git-2.31.1-64-bit.zip

    cherry-pick,用于从一个分支挑选特定的提交应用到另一个分支;以及revert,用于撤销特定的提交。 安装"Git-2.31.1-64-bit.exe"后,用户可以通过图形用户界面(如GitHub Desktop)或命令行工具进行操作。命令行工具...

    Git-2.12.0-64-bit

    在实际工作中,Git的使用技巧包括合理命名分支、定期拉取更新、使用.gitignore文件排除无关文件、编写有意义的提交信息以及熟练掌握rebase、merge和cherry-pick等高级操作。同时,理解并掌握Git的工作流,如Git Flow...

    git安装程序版本2.33.0.2-64位

    同时,熟悉基本的Git命令如`clone`、`commit`、`push`、`pull`、`merge`等,以及更高级的特性如`rebase`、`cherry-pick`、`submodule`等,是提高工作效率的关键。 总之,Git 2.33.0.2-64位是开发人员不可或缺的工具...

    git客户端Git-2.42.0.2-64.bit.exe

    在开发过程中,Git还提供了诸如`git rebase`(平滑分支历史)、`git stash`(暂存未提交的更改)和`git cherry-pick`(选取特定提交应用到其他分支)等高级功能,以满足各种复杂的版本控制需求。 总之,Git-2.42....

    git-2.18.0-3264合集

    5. 高级命令:Git提供了一系列高级命令,如`git rebase`用于整理提交历史,`git cherry-pick`用于选取特定提交应用到其他分支,以及`git bisect`用于快速定位bug。 在Git 2.18.0中,值得注意的新特性和改进包括: ...

    git 视频教程

    git视频教程.8.1.Git 命令 - git cherry-pick.mp4 git视频教程.8.2.Git 命令 - git rebase.mp4 git视频教程.8.3.Git 命令 - git rebase.mp4 git视频教程.8.4.Git 命令 - git revert.mp4 git视频教程.9.Git 命令 - ...

    git相关123456789

    6. **cherry-pick**:使用 `git cherry-pick <commit-hash>` 将特定提交应用到其他分支。例如,将 2 分支的一个 commit 应用到 1 分支。 7. **多个 commit 同时 push**:Git 会按顺序推送所有未推送的 commit,即使...

    Git-2.21.0-64-bit.zip

    * A "merge -c" instruction during "git rebase --rebase-merges" should give the user a chance to edit the log message, even when there is otherwise no need to create a new merge and replace the ...

Global site tag (gtag.js) - Google Analytics