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 到另一个分支
相关文章
|
2月前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
1月前
|
开发工具 git 开发者
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
62 17
|
1月前
|
开发工具 git 开发者
git rebase的使用
通过这些思维导图和分析说明表,您可以更直观地理解Git rebase的概念、用法和应用场景。希望本文能帮助您更高效地使用Git rebase,提高代码管理的效率和质量。
79 13
|
1月前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
44 3
|
2月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
62 1
[Git]入门及其常用命令
|
2月前
|
前端开发 持续交付 开发工具
理解前端开发中的 Git - Rebase
Git Rebase 是前端开发中常用的一种版本控制操作,用于将一个分支的更改整合到另一个分支。与合并(Merge)不同,Rebase 可以使提交历史更加线性整洁,有助于保持代码库的清晰和可维护性。通过 Rebase,开发者可以将特性分支的改动应用到主分支上,同时保留或重写提交记录。
|
3月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
155 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
2月前
|
开发工具 git 开发者
|
2月前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
76 0
|
4月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。