【Git】与“三年经验”就差个分支操作的距离

前言

Java之父于胜军说过,曾经一位“三年开发经验”的程序员粉丝朋友,刚入职因为不会解决分支问题而被开除,这是不是在警示我们什么呢?
针对一些Git的不常用操作,我们通过例子来演示一遍

1.版本回退

1.1已提交但未push

撤销Commit
先commit一次
在这里插入图片描述

通过git log查看提交的版本号,然后git reset来撤销commit
在这里插入图片描述
撤销commit和add
首先创建一个文件
在这里插入图片描述

进行commit
在这里插入图片描述

通过git reset --mixed 撤销add和commit

在这里插入图片描述

1.2提交并且push

使用git reset会完全抹去v4版本,并且在日志中也无法查询
生产环境中误提交到主分支就可以使用这个
在这里插入图片描述

1.提交两次版本
在这里插入图片描述

2.回退到版本v1,reset想要去到的版本号
在这里插入图片描述

回退效果

在这里插入图片描述

push回退之后的V1版本
在这里插入图片描述

使用git revert进行版本回退会重新生成一个版本,之前的无用版本也会存在与记录中
在这里插入图片描述

1.找到撤销的版本号
在这里插入图片描述

git revert 版本号,进入vi界面修改Revert提交信息之后:wq退出
在这里插入图片描述

修改成功之后直接push,也可以对当前版本做出调整之后add–commit–push

在这里插入图片描述

可以看到旧版本还存在,提交的是生成的“新版本”,并且内容回退到了v1
在这里插入图片描述

2.分支操作

2.1如何切换分支而使之前分支的代码不丢失?

使用git stash将代码暂存,开发完成之后切换到该分支对代码进行释放
在这里插入图片描述

切换到m2分支,进行m2分支的工作(修复bug),工作完成commit之后 git checkout m2
在这里插入图片描述

回到m1分支继续进行之前的开发,git checkout m1 之后git stash pop
分支暂存相当于一个入栈操作,此时m1分支暂存的记录就被删除了“相当于出栈”,使用git stash apply则不会删除
在这里插入图片描述

2.2如何拿到其他分支提交的代码?

通过cherry-pick 提交版本号即可拿到
在这里插入图片描述

3.分支问题

3.1压缩分支

在项目开发中,如果多次commit的是一个模块的内容,为了使分支更加美观我们可以将多次提交的记录压缩成一次,通过getRebase即可
比如提交了三个版本,直接git rebase -i HEAD~3,回车即可
在这里插入图片描述
在这里插入图片描述

当然也可以使用IDEA自带的快捷键进行使用

3.2合并分支

在实际场景中,当其他分支要合并到主分支中直接使用git merge(解决分支冲突之后commit push)即可
在这里插入图片描述

分支被成功合并
在这里插入图片描述

为了避免主分支分叉,我们可以进行变基操作git rebase dev
在这里插入图片描述

变基后主分支就变成了一条直线
在这里插入图片描述

然后进行分支合并git merge,这样在开发过程中中多余分支就与主分支没有了交集,即可以直接删除
在这里插入图片描述
在这里插入图片描述

这样删除多于分支就没什么问题了,因为都已合并到了主分支

猜你喜欢

转载自blog.csdn.net/weixin_57535055/article/details/129095174
今日推荐