重新回顾一个git rebase吧

130 阅读3分钟

「这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战

Hope is a good thing, maybe the best of things. And no good thing ever dies—— 《The Shawshank Redemption》

前言

我们在平时的开发过程中,Git是经常使用的代码托管工具,我们经常会发生很多commit,有些是临时性的提交,有些是小的问题修改的提交,这些小的提交结合起来才能构成一次完整的版本更新提交,所以需将若干个提交(commit)合并起来。

特别是有个场景:我们在修改一个bug的时候通常会有一个新的分支fixed/question,有时候我们会有多个提交(commit)去解决这个问题,当问题解决后,我们会将commit合并到主分支上,此时我们会用到 git cherry-pick commitId,但是如果我们有多个commit就会不方便,需要进行commit的合并,然后一次性的 pick 到主分支上。

今天用到合并commit,但是突然有点忘记了😅,所以就来回顾如何做。

查看commit历史

查看Git的commit记录,从而确定需要合并的commit。

git log

commit a6a7ca9e4c08140c3f570fd6ac1cce1bb9b392bb 
commit e6eb53f308cd5e5dc7fb229696c21f7c2b2b151d
commit eaa0cee6aae764faa090218ddd085de70c4dae0d

如图:

image.png

使用 git rebase

就如同上面,我们有3个commit,假如说我们要合并最后两个commit

  • 方法1: HEAD~ + number(需要合并的个数)
git rebase -i HEAD~2
  • 方法2: git rebase -i + commitID(需要合并的2个commit前面一个commitID)
git rebase -i eaa0cee6aae764faa090218ddd085de70c4dae0d

合并commit

  1. 在执行git rebase后,在命令行中会出现需要合并的提交信息,如下信息
pick 6c8eac8 Update README.md
pick 0664a5a Update README.md

# Rebase 2fb781e..0664a5a onto 2fb781e (2 commands)
  1. 按键盘i进行输入,然后修改picks
pick 6c8eac8 Update README.md
s 0664a5a Update README.md

# Rebase 2fb781e..0664a5a onto 2fb781e (2 commands)
  1. esc 然后 :wq 保存并退出,然后弹出提交信息
# 这是一个 2 个提交的组合。
# 这是第一个提交说明:

Update README.md
# 这是提交说明 #2:

Update README.md
  1. 将commit说明修改为最终的提交信息
# 这是一个 2 个提交的组合。
# 这是第一个提交说明:

Update README.md 信息合并
  1. esc 然后 :wq 保存并退出,然后就会显示出提交的头信息,如下图:

image.png

此时我们再次执行git log 就会看到我们的commit已经被合并了

image.png

结语

如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。

文章如有错误之处,希望在评论区指正🙏🙏

欢迎关注我的微信公众号,一起交流技术,微信搜索 🔍 :「 五十年以后