当前位置:   article > 正文

git rebase 命令的使用方法_git rebase 用法

git rebase 用法

【原文链接】git rebase 命令的使用方法

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

(1)应用场景:

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

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

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo
$ git init
Initialized empty Git repository in D:/src/git_demo/.git/

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ touch master_01

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git add .

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git commit -m "add master_01"
[master (root-commit) d11a19d] add master_01
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 master_01

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ touch master_02

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git add .

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git commit -m "add master_02
> "
[master d1cdbc7] add master_02
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 master_02

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ touch master03

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git add .

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git commit -m "add master_03"
[master 7bb00e7] add master_03
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 master03

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ touch master_04

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git add .

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git commit -m "add master_04"
[master 013d215] add master_04
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 master_04

hitre@iscas-redrose2100 MINGW64 /d/src/git_demo (master)
$ git log --pretty=oneline --graph
* 013d215ffd93297fa690229b19b0ed44de46e079 (HEAD -> master) add master_04
* 7bb00e73c94b57488773dad995c337476d075acb add master_03
* d1cdbc75ba7fe0fe22cc2b66fd80ce928faf02f8 add master_02
* d11a19dff87b2a5d36c0b3e9d1853fb36e8d22d7 add master_01
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

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

git rebase d11a19dff
  • 1

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

即:

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

(1)比如将上述四次提交的后面三次合并为一次提交

git rebase d11a19dff
  • 1

然后将最后两次的pick修改为squash即可,如下,表示将后面两次的提交合并到前一次提交

保存后弹出如下窗口,此时需要设置合并后的提交信息,默认的是把三次提交的信息合并在一起,这里可以编辑,以#开头的是注释,不是以#开头的即为提交信息

比如这里把提交信息修改为: add master_02,master_03,master_04

(2)此时查看git log 历史提交信息,如下,已经发生了变化,只有两次提交记录,而且第二次提交记录的信息也已经发生了变化

$ git log --pretty=oneline --abbrev-commit
bf974d4 (HEAD -> master) add master_02,master_03,master_04
d11a19d add master_01
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/789280
推荐阅读
相关标签
  

闽ICP备14008679号