前言
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,这样在开发过程中中多余分支就与主分支没有了交集,即可以直接删除
这样删除多于分支就没什么问题了,因为都已合并到了主分支
版权归原作者 懒羊羊.java 所有, 如有侵权,请联系我们删除。