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


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

    前言:
    个人认为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
    在这里插入图片描述
    ②新建分支dev并切到这个分支
    $ git branch dev
    $ git checkout dev
    $ git checkout -b dev //一条指令等价于上面两条指令
    在这里插入图片描述
    ③提交正在开发新功能的代码C3
    $ git commit
    在这里插入图片描述
    ④切换回master分支,然后切换到出问题的代码C1
    $ git checkout master
    $ git checkout C1
    在这里插入图片描述
    ⑤新建分支bug并切换到这个分支
    $ git branch bug
    $ git checkout bug
    在这里插入图片描述
    ⑥修复问题后提交代码
    $ git commit
    在这里插入图片描述
    ⑦切换到master分支,将修复的bug分支合并到主分支
    $ git checkout master
    $ git merge bug
    在这里插入图片描述
    ⑧问题修复了,可以选择将bug分支删掉,没啥用了
    $ git branch -d bug
    在这里插入图片描述
    ⑨继续回到dev分支开发,开发完成并提交
    $ git checkout dev
    $ git commit
    在这里插入图片描述
    ⑩将dev分支开发的合并到主分支中,就完成了
    $ git checkout master
    $ git merge dev
    在这里插入图片描述

    3、关于远程分支的学习

    在这里插入图片描述
    应用场景:一个项目在家里开发一部分,到公司也要开发,所以需要使用到码云(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 rebase -i 545201b2c3663a4d1347f3d2e79e7551b728d89c //合并这条提交记录以上的记录(不包含选中的这一条)
    $ git rebase -i HEAD~2 //合并最近的两条记录
    ②去除主线代码的分支
    在这里插入图片描述
    在这里插入图片描述
    上图用到的指令
    $ 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 tag -a V2.0 -m “发布第二版”
    在这里插入图片描述
    执行完成后,可以看到创建了标签
    在这里插入图片描述
    第二步把这个标签提交到远程
    $ git push origin --tags
    在这里插入图片描述
    在这里插入图片描述
    ③提交代码审查
    注意:员工开发了代码之后要给领导审核的,也就是提交pull requests
    在这里插入图片描述
    然后领导就会收到提交信息啦
    在这里插入图片描述
    领导审查完毕后先点击通过后就可以合并了
    在这里插入图片描述

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

    $ git log --graph --pretty=format:“%h %s”
    在这里插入图片描述

    $ git log --graph
    在这里插入图片描述

  • 相关阅读:
    到底什么是5G-R?
    一同走进Linux的“基操”世界
    我的创作纪念日
    新闻发稿多少钱一篇?轻松发布新闻一站式发稿服务平台
    微信小程序与Netty实现的WebSocket聊天程序
    业务可视化-让你的流程图"Run"起来(2.问题与改进)
    论文阅读_变分自编码器_VAE
    OpenSSH漏洞(CVE-2024-6387)
    vue2(2)
    想搞清楚API网关到底是什么?请看这篇
  • 原文地址:https://blog.csdn.net/weixin_50183638/article/details/127010965