应用场景一:在连续多次commit中丢掉其中的某一次提交

(1)应用场景:
在连续多次提交之后,其中依次修改由于某种原因比如引入重大bug但是又不知道怎么修复有非常紧急的情况下,想丢掉那一次commit,但是在那一次commit之后又提交了许多新功能的开发,如果使用reset命令恢复,则后面的许多新功能代码又要重新开发一遍,在这种场景下,就该git rebase出场了

(2)首先在一个文件夹下初始化一个目录演示,然后分别创建文件master_01,master_02,master,master03,master_04,分四次提交,如下

[root@hecs-73797 demo]# git init
已重新初始化已存在的 Git 仓库于 /root/demo/.git/

[root@hecs-73797 demo]# touch file01
[root@hecs-73797 demo]# git add .
[root@hecs-73797 demo]# git commit -m 'add file01'
[分离头指针 44e7b32] add file01
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 file02

[root@hecs-73797 demo]# touch file02
[root@hecs-73797 demo]# git add .
[root@hecs-73797 demo]# git commit -m 'add file02'
[分离头指针 5f52890] add file02
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file02

[root@hecs-73797 demo]# touch file03
[root@hecs-73797 demo]# git add .
[root@hecs-73797 demo]# git commit -m 'add file03'
[分离头指针 7b7fd47] add file03
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file03

[root@hecs-73797 demo]# touch file04
[root@hecs-73797 demo]# git add .
[root@hecs-73797 demo]# git commit -m 'add file04'
[分离头指针 ed99af0] add file04
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file04

[root@hecs-73797 demo]#  git log --pretty=oneline --graph
* 895c6f1e8fd01455fa2f9677b87a285e1a032203 (HEAD) add file04
* 6326372832f092aca25181b00807fa1c6343f57c add file03
* 9e97035358c51ddc6d9b722c7afbf4ced0950e5d add file02
* 90bc050adf779a71aa8344e6b413c8ed369c90f4 add file01

(3)比如此时我只想丢弃add file03的提交

#找到想要丢弃之前的那一个commit节点,为了演示,我用的是第一个
git rebase -i 90bc050

打开如下窗口,此时只需要将pick修改为drop即可做到将file03的提交丢弃,修改后保存退出即OK了
WX20220511-103248.png

注意:Centos7默认安装的是git version 1.8.3.1,这个版本是没有drop这个参数的,建议升级到最新的版本

应用场景二:将连续多次提交合并为一个提交

git rebase -i 90bc050

然后将最后两次的pick修改为squash即可,如下,表示将后面两次的提交合并到前一次提交
WX20220511-103451.png
保存后弹出如下窗口,此时需要设置合并后的提交信息,默认的是把三次提交的信息合并在一起,这里可以编辑,以#开头的是注释,不是以#开头的即为提交信息
WX20220511-103605.png
比如这里把提交信息修改为: add file02,file03,file04
WX20220511-103739.png
(2)此时查看git log 历史提交信息,如下,已经发生了变化,只有两次提交记录,而且第二次提交记录的信息也已经发生了变化

[root@localhost demo]# git log --pretty=oneline --abbrev-commit
bff95d6 (HEAD) add file02,file03,file04
90bc050 add file01
最后修改:2022 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏