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 到另一个分支
相关文章
|
10天前
|
存储 网络安全 开发工具
【GIT】Git常用命令学习
【GIT】Git常用命令学习
21 1
|
16天前
|
开发工具 git 开发者
【git merge/rebase】详解合并代码、解决冲突
【git merge/rebase】详解合并代码、解决冲突
39 0
|
1月前
|
JSON 开发工具 git
git rebase 合并当前分支的多个commit记录
git rebase 合并当前分支的多个commit记录
|
1月前
|
Shell 网络安全 开发工具
GIT常用命令
GIT常用命令
|
6天前
|
安全 开发工具 git
蓝易云 - git rebase和merge区别
在选择使用Merge还是Rebase时,需要根据具体的工作流程和团队的规定来决定。一般来说,如果你想保持完整的历史记录并且避免可能的冲突,你应该使用Merge。如果你想要一个干净的、线性的历史记录,你可以使用Rebase。
13 4
|
21天前
|
存储 安全 项目管理
Git项目管理——Git常用命令汇总(五)
Git项目管理——Git常用命令汇总(五)
21 1
|
17小时前
|
开发工具 git
代码合并、git merge冲突处理
在Git中,面对合并冲突可选`accept yours`或`theirs`,或手动合并(`merge`)。右键Git操作包括复制修订号、创建补丁、Cherry-Pick特定提交、回滚到旧版本、查看指定状态、比较本地版本、重置、反做提交、压缩多提交、丢弃提交、交互式重放、创建分支和标签。未push的commit可通过`undo`取消。`drop`和`revert`都回退代码,但`drop`同时丢弃commit。已push需回退时,使用`git reset --hard commitId`加`git push -f`,但注意可能影响他人;若想撤销,先`pull`。
4 0
|
1天前
|
开发工具 git
掌握Git必备:最常用的50个Git命令
掌握Git必备:最常用的50个Git命令
6 0
|
3天前
|
人工智能 运维 中间件
一文了解Git(所有命令)附带图片
一文了解Git(所有命令)附带图片
10 0
|
11天前
|
存储 IDE 开发工具
Git 常用命令大全
Git 常用命令大全
28 0