git rebase 合并多个提交

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

git rebase 合并多次提交,开发工具,git,elasticsearch,大数据

开发过程中,本地通常会有无数次 commit ,可以合并相同功能的多个 commit,以保持历史的简洁。

01 git rebase


命令使用

git rebase --help

# 从HEAD版本开始往过去数3个版本
$ git rebase -i HEAD~3

# 合并指定版本号(不包含此版本)
$ git rebase -i [commitid]

说明:

  • -i(–interactive):弹出交互式的界面进行编辑合并
  • [commitid]:要合并多个版本之前的版本号,注意:[commitid] 本身不参与合并

例如,如下例子中你想合并前 5 个 commit, 那么命令指定的 commitid 为 1d795e6,即 git rebase -i 1d795e6

$ git log --oneline
291e427 update website
8c8f3f4 update website
1693a6f update clear-logs.sh version
3759b84 update clear-logs.sh
fc36a2a add links
1d795e6 fix && update clear-logs.sh 0.0.2
9536dab add dingtalk script
3a51aaa fix shellcheck problem
2db6ad3 add clear logs scripts
e57b0e6 fix && add batch del
17cb931 fix && add batch del
cf7e875 add redis script
fe4bbcb Initial commit

使用该命令之后会进入一个交互式的界面进行编辑合并,该页面中的第一列表示指令:

  • p, pick = use commit
  • r, reword = use commit, but edit the commit message
  • e, edit = use commit, but stop for amending
  • s, squash = use commit, but meld into previous commit
  • f, fixup = like “squash”, but discard this commit’s log message
  • x, exec = run command (the rest of the line) using shell
  • d, drop = remove commit

02 合并步骤


  1. 查看 log 记录,使用 git rebase -i [commitid] 选择要合并的 commit
  2. 编辑要合并的版本信息,保存提交,多条合并会出现多次(可能会出现冲突)
  3. 修改注释信息后,保存提交,多条合并会出现多次
  4. 推送远程仓库或合并到主干分支、

2.1 查看 log

$ git log --oneline
291e427 update website
8c8f3f4 update website
1693a6f update clear-logs.sh version
3759b84 update clear-logs.sh
fc36a2a add links
1d795e6 fix && update clear-logs.sh 0.0.2
9536dab add dingtalk script
3a51aaa fix shellcheck problem
2db6ad3 add clear logs scripts
e57b0e6 fix && add batch del
17cb931 fix && add batch del
cf7e875 add redis script
fe4bbcb Initial commit

2.2 交互页面编辑合并版本

例如,执行 git rebase -i [commitid] 命令之后会跳出如下内容,注意显示的内容是倒序的最老的提交在最上面,最新的在最下面

# 指定要合并版本号,cf7e875 不参与合并,进入 vi 编辑器
$ git rebase -i cf7e875 
pick 17cb931 fix && add batch del
pick e57b0e6 fix && add batch del
pick 2db6ad3 add clear logs scripts
pick 3a51aaa fix shellcheck problem
pick 9536dab add dingtalk script
pick 1d795e6 fix && update clear-logs.sh 0.0.2
pick fc36a2a add links
pick 3759b84 update clear-logs.sh
pick 1693a6f update clear-logs.sh version
pick 8c8f3f4 update website

# Rebase cf7e875..291e427 onto cf7e875 (10 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

根据需求修改第一列的指令,对版本进行合并

pick 17cb931 fix && add batch del
f e57b0e6 fix && add batch del # 把 e57b0e6 合并到 17cb931,且不保留注释
pick 2db6ad3 add clear logs scripts
pick 3a51aaa fix shellcheck problem
pick 9536dab add dingtalk script
pick 1d795e6 fix && update clear-logs.sh 0.0.2
pick fc36a2a add linkss
pick 3759b84 update clear-logs.sh
s 1693a6f update clear-logs.sh version
s 8c8f3f4 update website # 把 8c8f3f4 和 1693a6f 合并到 3759b84

修改完成之后,:wq 保持退出。保存退出后,又弹出一个新的框,让我们更改commit信息,编辑完后退出就好了。

2.3 查看合并后的 log

4c2316c update clear-logs.sh
73f082e add links
56adcf2 fix && update clear-logs.sh 0.0.2
ebf3786 add dingtalk script
6e81ea7 fix shellcheck problem
64ca58f add clear logs scripts
9327def fix && add batch del
cf7e875 add redis script
fe4bbcb Initial commit

2.4 推送远程

首先,git pull 拉取与远程仓库同步,养成先pull最新代码再修改的好习惯;在修改本地代码前,先使用git pull拉取远程最新代码,然后再进行修改(推荐–rebase)

git pull 远程仓库名 远程分支名 --rebase

然后,git push 推送,合并后 commitid 发生了变化,git 不允许 push 改变提交历史的操作,可以新增或者减少 commit 但不能改变原来的commit 历史,因此会报冲突。

在确认代码无误的情况下,直接使用 --force 强制推送

git push 远程仓库名 远程分支名 --force

git rebase 过程中,可能会存在冲突,此时就需要解决冲突。

# 查看冲突
$ git status

# 解决冲突之后,本地提交
$ git add .

# rebase 继续
$ git rebase --continue

03 GitLens


如果你的 VSCode 安装了 GitLens 插件,这一切都可以变得很简单

如下图所示:

  • 首先点击侧边栏的版本控制按钮,
  • 然后,打开 Commits 栏,在该栏目中可以选择 Undo Commit 撤销提交
  • 接着,在本地暂存区 Stage 中就可以看到撤销的提交;选择需要合并冲突或者要修改的文件点击 Unstage,这些文件就会从暂存区撤回到工作区 Changes,这样就可以进行修改了;
  • 最后,修改完成之后,将不同的 Commit 修改合并成一个 Commit 提交

git rebase 合并多次提交,开发工具,git,elasticsearch,大数据


如果文章对你有帮助,欢迎一键三连 👍 ⭐️ 💬 。如果还能够点击关注,那真的是对我最大的鼓励 🔥 🔥 🔥 。


参考资料

https://cloud.tencent.com/developer/article/1690638

https://zhuanlan.zhihu.com/p/139321091文章来源地址https://www.toymoban.com/news/detail-725536.html

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

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

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

相关文章

  • git rebase 合并提交与避免分叉合并

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

    2024年02月15日
    浏览(26)
  • 【Git】合并多次commit提交

    原文作者 :我辈李想 版权声明 :文章原创,转载时请务必加上原文超链接、作者信息和本声明。 在开发阶段,由于我们会频繁的修改代码,会存在多次提交同一个修改,如果我们不合并提交,在于其他人代码合并时,会存在大量的commit提交记录,不利于代码版本。主要用过

    2024年02月20日
    浏览(28)
  • git 合并多次提交记录(commit)

    在开发过程中,对于一个完整的功能可能会先后进行多次提交。这种及提交方式不利于与代码走查时或者后期回顾功能点影响范围。为此,应该将多次提交合并为一次提交。 例如当前提交如下: 若我想合并前3次提交即从91bfbb8f599fa0129f28f9c4fd85e9feeca335be到7dbba7b7b46aa47bb57d109cd6

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

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

    2024年01月25日
    浏览(32)
  • git rebase合并多个commit记录

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

    2024年02月07日
    浏览(25)
  • 开发工具:git 提交时过滤不必要的文件

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。如果小伙伴们觉得不错就一键三连吧~ 有时候我们在 IDEA 中 git 提交时会出现一些不必要的文件让我们提交,那么这个时候我们如何避免这些文件被 git 识别到,请看下方解决方案。 比如这个提交,会有很多的这种:Ma

    2024年02月11日
    浏览(23)
  • Git代码合并之使用 rebase 整理提交历史

    ​以面试题为目标来进行学习,不定期推出前端高频面试题及其解析,题无简难,重在积累,欢迎wx关注 西西星球 ! Git 中整合来自不同分支的修改有两种方式: git merge 和 git rebase 。本文主要介绍 rebase 的3种使用场景: 场景1: 使用 rebase 合并分支–整合分叉的提交历史 使用

    2023年04月15日
    浏览(20)
  • git rebase (合并代码和整理提交记录)图文详解

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

    2024年02月09日
    浏览(25)
  • IDEA 中Git 多次 Commit 合并为一次提交

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

    2024年02月11日
    浏览(30)
  • 使用Git rebase合并多条提交记录commit。以及使用 git commit amend本地提交直接合并到远程已有commit的用法

    需求场景一 : 对某个小的功能点进行多次反复的修改提交,且已经提交到远程,导致commit记录过多,太过于杂乱无章,想要精简合并一些提交记录。 场景还原: 比如下图4个git commit记录,log1-log4,需要将他们合并成一个提交记录 解决方案: 要处理的是log1-log4 这四条commit记

    2024年02月08日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包