GIT_工作3年后对GIT重新总结学习

GIT_工作3年后对GIT重新总结学习

前言:
个人认为git学习可以分为五块,一块是本地仓库,第二块是远程仓库,第三块是分支学习,第四块是多人协同,第五是正规团队的高效沟通(审核代码)

1、本地仓库的常用功能基本都在这个图里了GIT_工作3年后对GIT重新总结学习_第1张图片

关于上图的指令
$ git status
$ git add .
$ git commit -m “提交测试时间”
$ git reset --soft 862238675e61f5b5f6af3704707b74e80334a769
$ git reset HEAD
$ git checkout .
$ git reset --mix 862238675e61f5b5f6af3704707b74e80334a769
$ git reset --hard 862238675e61f5b5f6af3704707b74e80334a769

2、关于分支的学习

描述:我们正在master分支上进行正常的开发工作C0->C1->C2正在开发新功能也就是即将上线的C3(但是还没有完全开发好,不能直接上传到master分支),此时发现C1中有个重大的问题需要修复,所以此时建立一个分支dev,然后从master的分支切换到dev分支,提交还未完成C3代码到dev分支中,切回到master分支,再切换到C1位置,新建一个bug的分支,切换到bug分支进行修改并提交代码,完成问题修复后,切回master分支,把bug分支中的改动合并到master上,然后切回dev分支继续开发,开发完成后提交,再切回master分支,把dev分支的代码合并到master分支上。

①目前开发进度处于C2
$ git commit
GIT_工作3年后对GIT重新总结学习_第2张图片
②新建分支dev并切到这个分支
$ git branch dev
$ git checkout dev
$ git checkout -b dev //一条指令等价于上面两条指令
GIT_工作3年后对GIT重新总结学习_第3张图片
③提交正在开发新功能的代码C3
$ git commit
GIT_工作3年后对GIT重新总结学习_第4张图片
④切换回master分支,然后切换到出问题的代码C1
$ git checkout master
$ git checkout C1
GIT_工作3年后对GIT重新总结学习_第5张图片
⑤新建分支bug并切换到这个分支
$ git branch bug
$ git checkout bug
GIT_工作3年后对GIT重新总结学习_第6张图片
⑥修复问题后提交代码
$ git commit
GIT_工作3年后对GIT重新总结学习_第7张图片
⑦切换到master分支,将修复的bug分支合并到主分支
$ git checkout master
$ git merge bug
GIT_工作3年后对GIT重新总结学习_第8张图片
⑧问题修复了,可以选择将bug分支删掉,没啥用了
$ git branch -d bug
GIT_工作3年后对GIT重新总结学习_第9张图片
⑨继续回到dev分支开发,开发完成并提交
$ git checkout dev
$ git commit
GIT_工作3年后对GIT重新总结学习_第10张图片
⑩将dev分支开发的合并到主分支中,就完成了
$ git checkout master
$ git merge dev
GIT_工作3年后对GIT重新总结学习_第11张图片

3、关于远程分支的学习

GIT_工作3年后对GIT重新总结学习_第12张图片
应用场景:一个项目在家里开发一部分,到公司也要开发,所以需要使用到码云(gitee)做一个代码托管,从一个DIY项目开始,有时候在家开发,有时候在公司开发。

开始在家开发并上传代码

①给远程仓库起别名(一般就是用origin)
git remote add origin xxx(远程仓库地址)
②向远端推送master分支代码
git push origin xxx(分支名,比如master)
②向远端推送dev分支代码
git push origin xxx(分支名,比如master)
③如果推送不成功可以强制推送(加-f参数)
git push -u -f origin master
注意:根据开发习惯我们一般会用两个分支协同开发,主分支master负责记录主线的一些稳定版本,另外一个dev分支是我们开发调试的分支,所以dev分支也要推送

到公司新电脑上第一次获取代码

①克隆远程仓库代码(内部已经实现git remote add origin xxx)
git clone xxx(仓库地址)
②切换分支(master分支是正式版,dev分支为开发调试版)
git checkout xxx(分支名)
注意:克隆下来的分支自带远程的全部分支,可以直接checkout过去

在公司进行开发工作

①切换到dev分支进行开发
git checkout dev
②把master分支合并到dev(第一次操作一次就行了,目的是为了同步到最新代码)
git merge master
③修改代码
④提交代码
git add .
git commit -m “xxx”
git push origin dev

回家继续开发

①切换到dev分支
git checkout dev
②拉取代码
git pull origin dev
③修改代码
④提交代码
git add .
git commit -m “xxx”
git push origin dev

在公司进行开发工作…循环往复,但是有一天恰巧不巧下班回家之前忘记提交代码了,这就导致我回家不能接着在公司开发的最新代码开始继续往下开发。怎么解决呢?
在公司开发

①切换到dev分支
git checkout dev
②拉取代码
git pull origin dev
③修改代码
④提交代码但是忘记提交到远程
git add .
git commit -m “xxx”

回家继续开发

①切换到dev分支
git checkout dev
②拉取代码,结果拉取不到最新的
git pull origin dev
③修改代码
④提交代码
git add .
git commit -m “xxx”
git push origin dev

到公司开发

①切换到dev分支
git checkout dev
②拉取代码,此时可能会有冲突,因为修改了同一行代码导致,要手动解决
git pull origin dev
在这里插入图片描述
③打开提示冲突的文件逐行进行修改
④修改代码
⑤提交代码
git add .
git commit -m “xxx”
git push origin dev

开发完成,要上线

①将dev分支合并到master
git checkout master
git merge dev
git push origin master
②把dev分支也推送到远程
git checkout dev
git push origin dev

4、rebase(变基)的使用使得提交记录变得简洁

①合并多次提交记录
应用场景:公司里面有一个主分支,然后老板让你新开发一个功能,然后从这个主分支拉取最新的代码到自己的分支dev,在自己的分支连续开发了好几天,有了好几次的提交记录,这时候不能讲我们分支的代码直接合并到公司主分支,这会导致这几天中提交的好几次记录也会跟着提交到公司的主分支中,导致公司中分支比较乱,所以我们要把我们自己分支中的这几天提交记录合并成一条,然后提交到公司主分支就好了
GIT_工作3年后对GIT重新总结学习_第13张图片
$ git rebase -i 545201b2c3663a4d1347f3d2e79e7551b728d89c //合并这条提交记录以上的记录(不包含选中的这一条)
$ git rebase -i HEAD~2 //合并最近的两条记录
②去除主线代码的分支
GIT_工作3年后对GIT重新总结学习_第14张图片
GIT_工作3年后对GIT重新总结学习_第15张图片
上图用到的指令
$ git checkout -b dev
$ git commit
$ git checkout master
$ git commit
$ git checkout dev
$ git rebase master
$ git checkout master
$ git merge dev
③发生冲突,解决冲突时候不会产生分叉
注意:git pull拉取代码时候如果有冲突,会产生分叉
解决办法:将git pull origin dev 替换成git fetch origin dev和git rebase origin/dev
④git rebase使用过程也可能会有冲突的情况
解决办法:和git merge一样,手动解决后,根据提示执行git add . 和git rebase --continue

5、多人协同开发

①多人协同开发的框架
GIT_工作3年后对GIT重新总结学习_第16张图片
②发布标签,也就是发布版本,效果如图
GIT_工作3年后对GIT重新总结学习_第17张图片
第一步创建一个标签
$ git tag -a V2.0 -m “发布第二版”
GIT_工作3年后对GIT重新总结学习_第18张图片
执行完成后,可以看到创建了标签
GIT_工作3年后对GIT重新总结学习_第19张图片
第二步把这个标签提交到远程
$ git push origin --tags
GIT_工作3年后对GIT重新总结学习_第20张图片
GIT_工作3年后对GIT重新总结学习_第21张图片
③提交代码审查
注意:员工开发了代码之后要给领导审核的,也就是提交pull requests
GIT_工作3年后对GIT重新总结学习_第22张图片
然后领导就会收到提交信息啦
GIT_工作3年后对GIT重新总结学习_第23张图片
领导审查完毕后先点击通过后就可以合并了
GIT_工作3年后对GIT重新总结学习_第24张图片

补充:查看提交记录的指令

$ git log --graph --pretty=format:“%h %s”
GIT_工作3年后对GIT重新总结学习_第25张图片

$ git log --graph
GIT_工作3年后对GIT重新总结学习_第26张图片

你可能感兴趣的:(Git学习与应用,git,学习,github)