git 常用命令详解(merge/rebase/cherry-pick)

简介: git常用命令详解。git merge将已提交的commit(自历史记录与当前分支分开以来的提交)合并到当前分支中。rebase变基的原理git-cherry-pick能应用(合并)已经存在的commit,即选择合并某个特定commit

merge

git merge 将已提交的commit(自历史记录与当前分支分开以来的提交)合并到当前分支中。

原始分支

      A---B---C topic
     /
    D---E---F---G master

checkoutmaster分支,使用命令git merge topic

      A---B---C topic
     /         \
    D---E---F---G---H master

git merge --abort将中止合并过程,并尝试重建合并前的状态。但是,如果在合并开始时有未提交的更改(尤其是在合并开始后进一步修改了这些更改),则git merge --abort在某些情况下将无法重建原始更改。因此警告:不建议运行git merge合并重要的未提交更改

rebase

git rebase的使用场景

  1. 合并多次commit为单次commit
  2. 分支合并

变基的原理

  1. 找到这两个分支(即当前分支 topic、变基操作的目标基底分支 master)的最近共同祖先 D
  2. 对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件(A+B+C=C')
  3. 然后将当前分支指向目标基底 C', 最后以此将之前另存为临时文件的修改依序应用。

原始分支

      A---B---C topic
     /
    D---E---F---G master

topic分支使用git rebase master

      C' topic
     /
    D---E---F---G maste

checkoutmaster分支,使用命令git merge topic

    D---E---F---G---C' master

注意:rebase 会改写历史记录,若该分支的提交已被其他使用者修改时,不建议使用

可选操作

  • p, pick 保留该commit
  • r, reword 保留该commit,但修改注释
  • e, edit 保留该commit,但修改提交
  • s, squash 保留该commit,将其前一个commit合并
  • f, fixup 操作与squash相同,但丢弃注释
  • x, exec 执行shell命令
  • d, drop 丢弃该commit

cherry-pick

git-cherry-pick 能应用(合并)已经存在的commit,即选择合并某个特定commit

原始分支

      A---B---C topic
     /
    D---E---F---G master

假设commit C的版本号为7289a5,在master分支使用git cherry-pick 7289a5

      A---B---C topic
     /
    D---E---F---G---C master

参考资料:

  1. git merge
  2. git book
  3. Git Community Book 中文版
  4. 彻底搞懂 Git-Rebase
  5. Git合并特定commits 到另一个分支
相关文章
|
1月前
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
232 57
|
2月前
|
存储 项目管理 开发工具
Git常用命令及操作技巧
以上是Git的常用命令及操作技巧,尽管看起来有些繁琐,但实际上只要花费一些时间进行实践,您将很快熟练掌握。随着使用熟练度的提高,您会发现Git对项目管理和协同工作的强大帮助。
84 20
|
4月前
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
237 60
|
3月前
|
Linux 开发工具 git
版本控制工具:Git的安装和基本命令使用指南。
结束这段探险,掌握了Git你就等于掌握了一个宝藏,随时可以瞥见你的编程历程,轻松面对日后的挑战。Git,无疑是编程者的强大武器,开始你的Git探险之旅吧!
148 28
|
5月前
|
开发工具 git
git的rebase和merge的区别
通过这些内容和示例,您可以深入理解Git的 `rebase`和 `merge`操作及其区别,选择合适的方法进行分支管理,提高版本控制的效率和规范性。希望这些内容对您的学习和工作有所帮助。
390 5
|
6月前
|
网络安全 开发工具 git
mac git clone命令提示git@gitee.com: Permission denied (publickey).问题修复
mac git clone命令拉取gitee上项目代码时提示密钥问题
|
6月前
|
Java 网络安全 开发工具
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
通过本文,读者可以深入了解Git的核心概念和实际操作技巧,提升版本管理能力。
|
7月前
|
开发工具 git 开发者
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
351 17
|
7月前
|
开发工具 git 开发者
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
579 13
|
7月前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
150 3

相关实验场景

更多