git 合并多次提交记录(commit)

这篇具有很好参考价值的文章主要介绍了git 合并多次提交记录(commit)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、应用场景

在开发过程中,对于一个完整的功能可能会先后进行多次提交。这种及提交方式不利于与代码走查时或者后期回顾功能点影响范围。为此,应该将多次提交合并为一次提交。

二、git rebase合并提交

例如当前提交如下:

[root@node2 test]# git log
commit 91bfbb8f599fa0129f28f9c4fd85e9feeca335be
Author: licc <2719540156@qq.com>
Date:   Wed Oct 18 06:20:41 2023 +0000

    功能:提交DockerFile

commit 56f27c0cd2f6e0c4d60b4b36526ea352ad7da5b8
Author: licc <2719540156@qq.com>
Date:   Wed Oct 18 06:16:53 2023 +0000

    功能:提交DockerFile

commit 7dbba7b7b46aa47bb57d109cd6c4dac3f3485a0a
Author: licc <2719540156@qq.com>
Date:   Wed Oct 18 05:28:38 2023 +0000

    功能:提交DockerFile与构建脚本、日志类型输出字符串

commit ae459d7a16e878276e6bb391c16ad4b4d0d23a47
Author: licc <2719540156@qq.com>
Date:   Fri Oct 13 09:09:06 2023 +0000

    功能:增加选项--no-web-service 关闭webService
    

若我想合并前3次提交即从91bfbb8f599fa0129f28f9c4fd85e9feeca335be到7dbba7b7b46aa47bb57d109cd6c4dac3f3485a0a的提交,以下为操作步骤:

1、找到需要合并的提交记录的前一次commit id

这里是ae459d7a16e878276e6bb391c16ad4b4d0d23a47(增加选项–no-web-service 关闭webService);

2、使用git rebase -i <的前一次commit id> 开始合并:
git rebase -i ae459d7a16e878276e6bb391c16ad4b4d0d23a47

# 3表示合并前3次提交
git rebase -i HEAD~3
3、此时弹出交互框,列出了需要合并的所有提交:
pick 7dbba7b 功能:提交DockerFile与构建脚本、日志类型输出字符串
pick 56f27c0 功能:提交DockerFile
pick 91bfbb8 功能:提交DockerFile

# 变基 ae459d7..0d23a47 到 ae459d7(3 个提交)
#
# 命令:
# p, pick <提交> = 使用提交
# r, reword <提交> = 使用提交,但修改提交说明
# e, edit <提交> = 使用提交,进入 shell 以便进行提交修补
# s, squash <提交> = 使用提交,但融合到前一个提交
# f, fixup <提交> = 类似于 "squash",但丢弃提交说明日志
# x, exec <命令> = 使用 shell 运行命令(此行剩余部分)
# b, break = 在此处停止(使用 'git rebase --continue' 继续变基)
# d, drop <提交> = 删除提交
# l, label <label> = 为当前 HEAD 打上标记
# t, reset <label> = 重置 HEAD 到该标记
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]
# .       创建一个合并提交,并使用原始的合并提交说明(如果没有指定
# .       原始提交,使用注释部分的 oneline 作为提交说明)。使用
# .       -c <提交> 可以编辑提交说明。
#
# 可以对这些行重新排序,将从上至下执行。
#
# 如果您在这里删除一行,对应的提交将会丢失。
#
# 然而,如果您删除全部内容,变基操作将会终止。
#

修改commit之前的单词,第一个commit保留为pick,后续的commit修改为s,

pick 7dbba7b 功能:提交DockerFile与构建脚本、日志类型输出字符串
s 56f27c0 功能:提交DockerFile
s 91bfbb8 功能:提交DockerFile

# 省略

修改完后,保存并退出(交互式框是vi编辑框,保存并退出的方法与vi操作相同)

4、此时会再次弹出交互式对话框,用于设置提交的消息:
# 这是一个 3 个提交的组合。
# 这是第一个提交说明:

功能:提交DockerFile与构建脚本、日志类型输出字符串

# 这是提交说明 #2:

功能:提交DockerFile

# 这是提交说明 #3:

功能:提交DockerFile

# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 省略 ......

若需要修改提交消息增应将上面删除然后修改,例如修改如下:


功能:提交DockerFile与构建脚本、日志类型输出字符串

# 请为您的变更输入提交说明。以 '#' 开始的行将被忽略,而一个空的提交
# 省略 ......

修改完后,保存并退出(交互式框是vi编辑框,保存并退出的方法与vi操作相同)文章来源地址https://www.toymoban.com/news/detail-753562.html

5、此时完成了本地仓库中commit的合并,可以通过git log查看合并后的效果
[root@node2 test]# git log
commit e66a398f3ae8889ec39ffae51cf1ddf773098dac
Author: licc <2719540156@qq.com>
Date:   Wed Oct 18 05:28:38 2023 +0000

    功能:提交DockerFile与构建脚本、日志类型输出字符串

commit ae459d7a16e878276e6bb391c16ad4b4d0d23a47
Author: licc <2719540156@qq.com>
Date:   Fri Oct 13 09:09:06 2023 +0000

    功能:增加选项--no-web-service 关闭webService
    
6、如果之前的提交已经同步到git服务器,可以使用git push -f 强制将本地仓库同步至git服务器(可选)

到了这里,关于git 合并多次提交记录(commit)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA 中Git 多次 Commit 合并为一次提交

    由于个人习惯的原因,喜欢一个功能分多次提交,导致很多提交比较零碎。 有时候经常需要将零碎的提交合并成一次,该怎么办? 可以使用 IDEA 自带的 Git 插件 将多次 Commit 合并成一次。 如希望将第二次到第六次提交合并成一次提交 选中需要合并的提交,选择 Squash Commits

    2024年02月11日
    浏览(56)
  • git rebase合并多个commit记录

    在做一个需求的时候,会出现多次提交记录,如下: 其中,发现中间有三次提交的记录一致,是可以合并成一次commit的 下面开始合并: 1.找到要合并的commit 命令 其中 -i 的意思是–interact,即弹出交互式的界面让用户编辑完成合并操作 [startpoint] [endpoint]是前开后闭的区间 [

    2024年02月07日
    浏览(42)
  • git rebase (合并代码和整理提交记录)图文详解

    建议在看这篇文章之前一定要看完:git reset 命令详解 git revert命令详解。 看完上面的文章后,在rebase操作(成功/失误)后还可以进行回退。不至于咱们再去费劲创建那些提交记录。 git rebase 有两种作用 合并代码 整理提交记录 可以看到有两个分支,2023的分支是在master的基础

    2024年02月09日
    浏览(53)
  • git——合并分支commit记录 squash提交

         在公司和别人协同合作时,作为开发需要向架构或者负责人提交mr以合并代码,为了提高review效率,有些负责人会要求一个mr仅保留一条commit记录方便代码比对review的观看,但是开发常常是很多需求和bug混合着写,不可能每个分支都暂存一下去其他分支查看吧,因此总会

    2024年02月14日
    浏览(65)
  • 使用 git rebase 合并多个 commit

    首先我们查看一下当前提交历史: 我们通过 git rebase -i 61e7d87 将 44f23cb 、 9d2725f 和 da3ba01 这三个提交合并,这里的 61e7d87 为 待合并的提交区间的前一个提交的哈希值 。 执行之后会进入到 vim 编辑器中,每一行代表一个 todo 项。我们这里需要 pick 第一个提交并将后面两个提交

    2024年01月25日
    浏览(51)
  • git rebase 合并提交

    git log --oneline 查看当前提交记录 git rebase -i HEAD~2 选择最后提交的2条记录进行合并 进入编辑界面,将c865404的 pick 改为 f , 表示向前合并也就是向cc5a54合并 编辑完之后 :wq 保存并退出 git rebase --continue git push --force origin feature/v1.2 推送到仓库 git rebase --abort 取消变基

    2024年02月16日
    浏览(37)
  • git rebase 合并多个提交

    开发过程中,本地通常会有无数次 commit ,可以合并相同功能的多个 commit,以保持历史的简洁。 命令使用 说明: -i(–interactive):弹出交互式的界面进行编辑合并 [commitid]:要合并多个版本之前的版本号,注意:[commitid] 本身不参与合并 例如,如下例子中你想合并前 5 个

    2024年02月07日
    浏览(35)
  • git rebase 合并提交与避免分叉合并

    本文让你熟练使用 rebase,学会以下两种操作,从此拒绝杂乱无章的 git 提交。 你可能出现过对同一处代码进行多次处理的场景。这会导致如下提交记录: 其实,中间的对 b 的3次提交完全可以合并成一次 commit,这个时候 rebase 就很有用了。 step1. 找到想要合并的 commit, 使用 re

    2024年02月15日
    浏览(52)
  • 【随笔】Git 高级篇 -- 提交的技巧(上) rebase & commit --amend(十八)

    💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘 您的点赞、关注、收藏、评论,是对我最大

    2024年04月22日
    浏览(43)
  • 【笔记】Git|将git仓库中所有的 commit 合成一个,清空所有 git 提交记录

    在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息。因此会存在 将仓库中所有 commit 合成一个 的需求。 直觉上,往往会用 rebase 和 squash 或 reset,不过我尝试了一下存在问题,会出现最后仍然剩两个

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包