【Git】合并多次commit提交

原文作者 :我辈李想
版权声明 :文章原创,转载时请务必加上原文超链接、作者信息和本声明。


文章目录

  • 前言
  • [一、git rebase合并](#一、git rebase合并)
  • [二、git reset合并](#二、git reset合并)

前言

在开发阶段,由于我们会频繁的修改代码,会存在多次提交同一个修改,如果我们不合并提交,在于其他人代码合并时,会存在大量的commit提交记录,不利于代码版本。主要用过两个主要命令,分别是git rebase 和git reset。


一、git rebase合并

  1. 切换分支
shell 复制代码
git branch
git checkout <分支名称>
  1. 检查代码是否干净

    如果不进行这一步,后边合并时将报错以下错误提示,可先用git status 查看是否有需要提交的文件,没有的话就用git stash


  2. 查看commit提交日志,可以q退出

shell 复制代码
git log --oneline
  1. 合并分支
    这里的 n 表示最近的 n 个提交数量。如果想要合并所有的提交,则可以省略该参数。我们这里取2
shell 复制代码
git rebase -i HEAD~n 

git rebase会打开一个vim文本编辑器(需要会修改保存和退出),显示了最近的 n 个提交记录。每个提交前面都有一个 pick 关键字,表示保留该提交。若要合并两个相邻的提交,只需删除第二个提交之前的 pick 关键字,改为 squash 或 s。同样,若要合并更多的提交,只需按照上述操作修改对应的提交行。

  1. 修改状态

    详细查看第三步和第四部的截图,a463bad是最后一次提交,72615de是倒数第二次提交,我们的需求就是将a463bad合并至72615de,可进行如下修改。

  2. 确认

    Esc如果无法退出到保存,可以Esc+鼠标左键。

    wq保存并退出后,需要查看message,如果不想改可以继续wq

    这里我们可以跟之前图片对照,可以发现1d6494d是合并2次commit的新提交,afc23f7是原来的倒数第三个提交。

  3. 提交到远程仓库

shell 复制代码
git push -f

二、git reset合并

git reset的本意是版本回退,回退时可以选择保留commit提交。我们基于git reset的作用,结合新建分支,可以实现多次commit提交的合并。这个不需要vim编辑,很少有冲突。

  1. 基于现在的banch新建分支
  2. 在新分支中打开git log
  3. 选择一个想要合并的版本进行reset
  4. 重新查看push内容,进行commit提交,这次提交将合并所有,推送至远程新分支
  5. 如有需要,现在可以删除旧分支使用新分支




相关推荐
Flynt9 小时前
HN 382分热文里的终端小技巧,我实测了一遍,git pickaxe 最值
git·命令行
横木沉18 小时前
IntelliJ IDEA 无法识别 Git:Git is not installed 问题解决
java·git·github·intellij-idea
为你学会写情书20 小时前
Git 学习指南:从日常命令到多人协作与提交规范
git
东小黑21 小时前
Git 仓库操作与 VSCode 使用指南
git·vscode·gitee
拼图2091 天前
Git常用语法
分布式·git·学习
ShineWinsu2 天前
对于Git:基础操作的超详细保姆级解析
linux·c++·git·面试·备份·管理·版本控制器
沉迷...2 天前
Git skip-worktree 使用笔记(本地忽略配置文件)
javascript·git
解道Jdon2 天前
JDK 27发布:紧凑对象头、G1默认、量子安全TLS
ide·windows·git·svn·eclipse·github·visual studio
天天喝旺仔2 天前
Git 内部原理深度解析:从 blob/tree/commit 对象到 packfile 与垃圾回收
数据结构·数据库·git·算法·哈希
艾莉丝努力练剑2 天前
【Git:综合复盘】Git 原理与使用
大数据·人工智能·git·elasticsearch·面试