Git----Git命令rebase应用

简介: Git----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

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

git rebase d11a19dff

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qPQTGrPv-1641726637532)(./../images/git_rebase/git_rebase_drop.png)]

即:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QbVTVSey-1641726637533)(./../images/git_rebase/git_rebase_drop_result.png)]

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

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

git rebase d11a19dff

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XcCSN0yL-1641726637534)(./../images/git_rebase/git_rebase_squash.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7U5IFtGL-1641726637534)(./../images/git_rebase/git_rebase_squash_msg.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fL5Jyh3F-1641726637534)(./../images/git_rebase/git_rebase_squash_msg_change.png)]

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

$ git log --pretty=oneline --abbrev-commit
bf974d4 (HEAD -> master) add master_02,master_03,master_04
d11a19d add master_01
目录
相关文章
|
9月前
|
开发工具 git
Git版本控制工具合并分支merge命令操作流程
通过以上步聚焦于技术性和操作层面指南(guidance), 可以有效管理项目版本控制(version control), 并促进团队协作(collaboration).
2463 15
|
安全 开发工具 git
git的常用操作命令
git的常用操作命令
665 57
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
2674 60
|
10月前
|
存储 缓存 开发工具
Git stash命令的详细使用说明及案例分析。
通过上述案例,我们看到stash命令能够在不丢失进度的情况下,帮助开发者临时切换开发上下文,这在处理多个任务或紧急bug时特别有用。正确使用Git stash可以大大提高开发的灵活性和效率。
2628 0
|
存储 项目管理 开发工具
Git常用命令及操作技巧
以上是Git的常用命令及操作技巧,尽管看起来有些繁琐,但实际上只要花费一些时间进行实践,您将很快熟练掌握。随着使用熟练度的提高,您会发现Git对项目管理和协同工作的强大帮助。
299 20
|
Linux 开发工具 git
版本控制工具:Git的安装和基本命令使用指南。
结束这段探险,掌握了Git你就等于掌握了一个宝藏,随时可以瞥见你的编程历程,轻松面对日后的挑战。Git,无疑是编程者的强大武器,开始你的Git探险之旅吧!
505 28
|
网络安全 开发工具 git
mac git clone命令提示git@gitee.com: Permission denied (publickey).问题修复
mac git clone命令拉取gitee上项目代码时提示密钥问题
1362 19
|
开发工具 git
git的rebase和merge的区别
通过这些内容和示例,您可以深入理解Git的 `rebase`和 `merge`操作及其区别,选择合适的方法进行分支管理,提高版本控制的效率和规范性。希望这些内容对您的学习和工作有所帮助。
3191 5
|
Java 网络安全 开发工具
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
通过本文,读者可以深入了解Git的核心概念和实际操作技巧,提升版本管理能力。