博客列表 >第十二模块:开发常用工具(选修)

第十二模块:开发常用工具(选修)

刘静的博客
刘静的博客原创
2020年09月03日 12:40:501006浏览

typora-root-url: pic


第十二模块:开发常用工具(选修)

第一章 快速入门

1.1什么是Git

  • 文件夹拷贝
  • 本地版本控制
  • 集中式版本控制
  • 分布式版本控制

1.2为什么要做版本控制

要保留之前所有的版本,以便回滚和修改。

1.3安装git

详见:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

1.4版本控制流程

版本控制 ———————>git管理文件夹

1.进入要管理的文件夹(进入)

2.初始化(提名)

3.管理

4.生成版本

第二章 春生创业史

2.1版本1生成(第一阶段)

第一步:

进入要管理的文件夹,鼠标右键点击”git bash”菜单

第二步:

在启动的”git bash”命令窗口中,执行初始化 即:让git帮助我们管理当前文件夹

  1. $ git init
第三步:

管理目录下的文件状态

  1. $ git status
  2. 注:新增的文件和修改过后的文件都是红色
第四步:

管理指定文件(红变绿)

  1. $ git add P1_JSbasic.md
  2. $ git add 文件名
  3. $ git add .

[^不能用中文名]:

个人信息配置:用户名、邮箱【一次即可】

  1. $ git config --global user.email "1097576058@qq.com"
  2. $ git config --global user.name"jingjing"
第五步:

生成版本

  1. $ git commit -m '描述信息'

版本2生成

修改完P1_JSbasic.md文件

第一步:

管理目录下的文件状态

  1. $ git status
  2. 检测到modified P1_JSbasic.md 文件
第二步:

管理指定文件(红变绿)

  1. $ git add P1_JSbasic.md
  2. 或者
  3. $ git add .
第三步:

生成版本号

  1. $ git commit -m 'v2'
查看两个版本的记录
  1. $ git log

2.2 第二阶段:拓展新功能

  1. $ git add .
  2. $ git commit -m '描述信息'

2.3 第三阶段:回滚事件

git分为三大区域:工作区,暂存区,版本库

工作区(红色):已管 新增/修改

暂存区(绿色):add*

版本库(绿色):commit -m

回滚至之前版本:

  1. $ git log
  2. $ git reset --hard 2fd0f0a62f828241cc7480b5aba27ceedb62783b
  3. 注释:commit MD5加密的长串字符2fd0f0a62f828241cc7480b5aba27ceedb62783b

回滚之之后版本

  1. $ git reflog
  1. $ git reset --hard 57d582b
  2. 注意:v2版本前的57d582b

  1. 新修改文件--->已控制版本
  2. $ git init
  3. $ git status
  4. $ git checkout -- index.html
  1. 暂存区--->新修改文件
  2. $ git add .
  3. $ git status(变绿)
  4. $ git reset HEAD index.html
  5. $ git status(变红)

2.4基于分支修复线上bug具体过程

  1. $ git log
  2. $ git branch //*master 主干 查看分支
  3. $ git branch dev //创建分支名称为dev

切换到dev分支进行开发

  1. $ git checkout dev

修复bug代码

  1. $ git branch bug //创建bug分支
  2. $ git checkout bug //切换到bug分支
  3. 修改完bug代码
  4. $ git branch master //切换到master主干
  5. $ git merge bug //把bug分支的代码合并到主干分支master
  6. $ git branch -d bug //删除bug分支代码
  7. $ git branch //查看分支,此时已经没有了bug分支,只有dev和master
  8. $ git checkout dev //切换回dev分支继续开发代码

把dev开发完的代码合并到master中

  1. $ git checkout master //切换到master主干
  2. $ git merge dev //把dev分支的代码合并到主干分支master

产生冲突:

  1. CONFLICT (content): Merge conflict in index.html
  2. Automatic merge failed; fix conflicts and then commit the result.

需要手动修改代码

  1. 修改完代码后
  2. $ git add .
  3. $ git commit -m'上线'
  4. $ git log

2.5 第四阶段:商城&紧急修复bug

2.5.1 分支

分支可以给使用者提供多个环境的可以,意味着你可以把你的工作从开发主线上分离出来,以免影响开发主线。

2.5.2 紧急修复bug方案

2.5.3命令总结

查看分支

  1. $ git branch

创建分支

  1. $ git branch 分支名称

切换分支

  1. $ git checkout 分支名称

分支合并(可能产生冲突)

  1. ![git工作流](/git工作流.png)$ git merge 要合并的分支
  2. 注意:先需要切换分支再合并

删除分支

  1. $ git branch -d 分支名称

2.5.4工作流

2.6第五阶段:进军三里屯

  1. $ git init
  2. $ git add README.md
  3. $ git commit -m "first commit"
  4. $ git branch -M master
  5. $ git remote add origin https://github.com/liujing199010232929AABB/JS.git
  6. $ git push -u origin master

1.在家里上传代码

  1. 1.给远程仓库起别名
  2. $ git remote add origin https://github.com/liujing199010232929AABB/JS.git
  1. 2.推送dev分支到GitHub仓库
  2. $ git push -u origin dev

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

  1. 1.GitHub仓库代码拉倒本地来
  2. $ git clone https://github.com/liujing199010232929AABB/JS.git 内部已实现git remote add origin 远程仓库地址
  3. 2.切换分支
  4. $ git checkout 分支

进入下载完毕的JS文件夹中

  1. $ ls //查看文件夹中文件
  2. $ cd JS //进入文件夹(里面有很多文件)
  3. $ cat index.html //查看文件内容
  4. $ git log //可以查看提交记录
  5. $ git branch //虽然只显示master 但是dev分支也存在只是没有显示出来
  6. $ git checkout dev//切换到dev分支
  7. $ cat index.html//查看dev分支写的index.html代码

3.在公司进行开发

  1. 1.切换到dev分支进行开发
  2. $ git checkout dev
  3. 2.master分支合并到dev[仅一次]
  4. $ git merge master
  5. 3.修改代码
  6. 4.提交代码
  7. $ git add .
  8. $ git commit -m 'xxxxxx'
  9. $ git push origin dev

4.回到家中继续写代码

  1. 1.切换到dev分支进行开发
  2. $ git checkout dev
  3. 2.拉代码
  4. $ git pull origin dev
  5. 3.继续开发
  6. 4.提交代码
  7. $ git add .
  8. $ git commit -m 'xxxxxx'
  9. $ git push origin dev

5.在公司继续开发

  1. 1.切换到dev分支进行开发
  2. $ git checkout dev
  3. 2.master分支合并到dev[仅一次]
  4. $ git merge master
  5. 3.修改代码
  6. 4.提交代码
  7. $ git add .
  8. $ git commit -m 'xxxxxx'
  9. $ git push origin dev

6.开发完毕要上线

  1. 在公司
  2. $ touch a4.html
  3. $ git add .
  4. $ git commit -m '开发完毕'
  5. 1.dev分支合并到master,进行上线
  6. $ git checkout master
  7. $ git merge dev
  8. $ git push origin master//也是最新的master
  9. 2.dev分支也推送到远程
  10. $ git checkout dev
  11. $ git merge master
  12. $ git push origin dev//也是最新的dev

7.再次开发

  1. $ git pull origin dev
  2. $ git pull origin master

2.7奔波于沙河和三里屯之间

在沙河把代码保存到GitHub仓库中

  1. $ git branch//检查到有master和dev分支
  2. $ git checkout dev//切换到dev分支
  3. $ git merge master //把master最新的版本合并到dev代码中,将dev代码更新为最新代码
  4. $ git log //查看最新版本
  1. $ touch d1.html //新建代码d1.html
  2. $ git status
  3. $ git add .
  4. $ git commit -m'上班第一天代码'
  5. $ git push -u origin master
  6. 或者
  7. $ git push origin dev

在三里屯GitHub仓库中拉倒本地

  1. $ git pull origin dev//从GitHub仓库dev分支中把代码拉下来

2.8忘记推送代码(合并,会有冲突)

  1. $ vim a5.html

在公司开发项目新功能50%

  1. $ git add .
  2. $ git commit -m '开发项目新功能50%'
  3. 没有推送到github仓库

在家开发其他新功能

  1. $ git add .
  2. $ git commit -m '在家开发其他新功能'
  3. $ git push origin dev

第二天在在公司开发项目新功能另外的50%

  1. $ git pull origin dev

直接报冲突,需要手动修改代码

  1. CONFLICT (content): Merge conflict in index.html
  2. Automatic merge failed; fix conflicts and then commit the result.

解决冲突,继续开发

  1. $ git add .
  2. $ git commit -m '继续开发完毕'
  3. $ git push origin dev

上线

两个命令

  1. $ git pull origin dev
  2. 等同于
  3. $ git fetch origin dev //把GitHub仓库代码放到版本库中
  4. $ git merge origin/dev//把版本库中的代码合并到本地工作区

2.9 rebase(变基)应用场景

作用:rebase使git提交记录变得简洁

第一种:

把多个git记录整合成一个

  1. $ git rebase -i HEAD~3//代表最新的三条记录合并

或者添加版本号

  1. $ git rebase -i f10c4efcb506deed03f7fedc8f44a81fd5e2994f(v2版本号)//v2-v4版本合并

会显示

  1. pick f10c4ef 第二天代码版本
  2. s 5279092 第三天代码版本
  3. s 86b37dc 第四天代码版本
  4. 第三天代码版本和第四天代码版本合并到第二天代码版本
  5. :wq
  6. $ rm -fr ".git/rebase-merge"//代表删除之前合并的

[^注意:合并记录不要合并提交push到远程仓库中的记录]:

vim编辑器中常用命令

  1. ai代表命令可编辑
  2. 输入冒号:代表进入编辑器末尾
  3. 再输入:wq +enter键直接再进入vim另外一个对话框
  4. 再输入:wq +enter,保存并退出到git bash 界面中

第二种:

vim编辑器中常用命令

  1. ai代表命令可编辑
  2. ESC 退出编辑
  3. a进入编辑
  4. :wq+Enter代表保存退出
  1. $ git log --graph//图形显示log程序
  2. $ git log --graph --pretty=format:"%h %s"//h:hash值;s:记录

步骤如下:

  1. 第一步:切换到dev分支
  2. $ git checkout dev
  3. 第二步:在dev分支把master代码何并到dev分支
  4. $ git rebase master//相当于$ git merge master
  5. 第三步:切换回master分支
  6. $ git checkout master
  7. 第四步:
  8. $ git merge dev//把dev分支合并到master上
  9. $ git log --graph --pretty=format:"%h %s"//h:hash值;s:记录

第三种:

  1. $ git pull origin dev
  2. 相当于
  3. $ git fetch origin dev
  4. $ git rebase origin dev

[^注意:git rebase 产生冲突,解决冲突,git add. git rebase —continue]:

2.10 快速解决冲突(Beyond Compare软件应用)

1.安装Beyond Compare

2.在git中配置

  1. $ git config --local merge.tool bc3//起一个别名
  2. $ git config --local mergetool.path 'D:\Program Files (x86)\Beyond Compare 4\Beyond Compare 4' //安装目录 'usr/local/bin/bcomp'
  3. $ git config --local mergetool.keepBackup false//不用保留源文件备份
  4. 注意 --local 只对当前项目有效
  5. $ pwd
  6. /c/Users/静静/Desktop/download/pro_rebase

3.应用Beyond Compare解决冲突

  1. $ git mergetool

2.11总结

添加远程连接(别名)

  1. $ git remote add origin 地址

推送代码

  1. $ git push origin dev

下载代码

  1. $ git clone 地址

拉取代码

  1. $ git pull origin dev
  2. 等价于
  3. $ git fetch origin dev
  4. $ git merge origin/dev

保持代码提交简洁(变基)

  1. $ git rebase 分支

记录图形展示

  1. $ git log --graph --pretty=format:"%h %s"

2.12多人协同开发gitflow工作流思路(第六阶段)

在GitHub项目中创建组织(New organization)

下面把个人电脑上面的代码推送到组织(liujingfamily2)中的项目dbhost

git中的版本控制

  1. $ git tag -a v1 -m'第一版'//在本地tag打在了此次提交的记录上面
  2. 注意 tag v1 是对hash值做的简写

推送到GitHub中

  1. $ git push origin --tags

多人协作项目

第一步:创建dev分支

  1. $ git checkout -b dev//创建dev并且切换到dev分支
  2. 等价于
  3. $ git branch dev
  4. $ git checkout dev

第二步:把dev分支推送到GitHub

  1. $ git push origin dev

新人工作人员

把代码克隆到本地开发

  1. $ git clone https://github.com/liujingfamily2/dbhost.git

切换到dev分支

  1. $ git checkout dev

再在dev分支拆分doudizhu任务

  1. $ git checkout -b doudizhu //创建doudizhu并且切换到doudizhu分支
  2. doudizhu任务继续开发
  3. $ vim 斗地主.html
  4. 开发完斗地主功能
  5. :wq
  6. 回到doudizhu分支
  7. $ git add 斗地主.html
  8. $ git commit -m'斗地主第一版本'
  9. $ git push origin doudizhu //推送到GitHub中斗地主分支,完成斗地主第一版本

review阶段

1.合并前需要在leader中GitHub中配置,配置过程:settings->Branches->Add rule->Branch name pattern(添加分支名称)和下面勾选的review规则细节

2.需要在小弟GitHub中pull requests中把doudiz分支合并到dev分支

3.在leader中GitHub中pull requests中点击merge pull request按钮,下方的delete branch可以删除doudizhu任务分支

或者

leader用代码review

第一步:

  1. git fetch origin
  2. git checkout -b doudizhu origin/doudizhu
  3. git merge dev

第二步:

  1. git checkout dev
  2. git merge --no-ff doudizhu
  3. git push origin dev

[^review阶段必须线上pull requests;release阶段可以本地$ git merge 分支名称]:

提出测试

  1. $ git checkout dev
  2. $ git checkout -b release//切出release分支进行测试
  3. $ git push origin release

在GitHub中把release分支合并到master分支

1.需要在leaderGitHub中pull requests中把release分支合并到master分支

3.在leader中GitHub中pull requests中点击merge pull request按钮,下方的delete branch可以删除release任务分支

在本地把release分支合并到dev分支

  1. $ git checkout dev
  2. $ git merge release
  3. $ git branch -d release//删除release分支
  4. $ git checkout master
  5. $ git pull origin master
  6. $ git tag -a v2 -m‘第二版’
  7. $ git push origin --tags

[^注意:review阶段和release阶段都可能产生冲突]:

运维人员就可以线上下载代码做上线

  1. $ git clone -b v2 地址

2.13第七阶段:给其他开源软件贡献代码

1.fork源码

将别人的源代码拷贝到我自己的远程仓库。

2.在自己的仓库修改代码

3.给源代码的作者提交 修复bug的申请(pull request)

第三章 其他

3.1配置

项目配置文件:项目/.git/config 在当前项目生效

  1. $ vim .git/config
  1. $ git config --local user.namejingjing
  2. $ git config --local user.email'jingjing@xx.com'

全局配置文件:~/.gitconfig

  1. $ vim ~/.gitconfig
  1. $ git config --global user.name 'jingjing'
  2. $ git config --global user.email'jingjing@xx.com'

系统配置文件:/etc/.gitconfig

  1. $ git config --system user.name 'jingjing'
  2. $ git config --system user.email'jingjing@xx.com'
  3. 注意:需要有root权限

应用场景:

  1. $ git config --local user.namejingjing
  2. $ git config --local user.email'jingjing@xx.com'
  3. $ git config --local merge.tool bc3//起一个别名
  4. $ git config --local mergetool.path 'D:\Program Files (x86)\Beyond Compare 4\Beyond Compare 4' //安装目录 'usr/local/bin/bcomp'
  5. $ git config --local mergetool.keepBackup false//不用保留源文件备份
  6. $ git remote add origin 地址 //origin默认添加在本地配置文件中(--local)

3.2免密码登录

URL中体现

  1. 原来的地址:https://github.com/liujingfamily2/dbhost.git
  2. 修改的地址:https://用户名:密码@github.com/liujingfamily2/dbhost.git
  3. $ git remote add origin https://用户名:密码@github.com/liujingfamily2/dbhost.git
  4. $ git push origin master

SSH实现(公钥)

  1. 1.生成公钥和私钥(默认放在~/.ssh/id_rsa.pub)id_rsa.pub公钥;id_rsa私钥
  2. $ ssh-keygen +enter+enter+enter
  3. $ cat ~/.ssh/id_rsa.pub//拿到公钥
  4. 2.拷贝公钥的内容,并设置到GitHub中(个人菜单下的setting->SSH & GPG keys)
  5. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDlDTFpg0s2JzV4KAMsaR7NpkGHCzWlECswFdPHgoalsXjgvCQCGhbe0zmtqRduhAcDXeRZyeVETP57kPksGJnHsfwRrZp1v4Luvg35wj8LngYLWRAZSiAWo0xUPnDAUDQxLq3jQdThAiK6i4ffCQ3gXfjfQ6x/qWKF+Kzesxu07mGzmwcZIRqnB7aEJF6ZivYkhcUgWNPwwWjm2wdhzwiEh2vdsY10y08DcFx8YS/1ZAENRsSz7psziQP1RT09iwP7PszewdXYmJIdXXO/MhN5ELCnbNEogXIEU61L+fV/SSk59J0p7YYsaqWOtsxR/IdvfawsS0kM7DSmdHleugSLnI6zi2RTCYg+J7m15/AyUrljN6xAAHxKfhICM/onQJvTVLoaqXc1e8SljvXNMVJj/tTIRaOfuYeBGDW9y6RB+Y01+cjYNhlEWq71yJ4FYJKI7LdnJXqqqH2AedLw2liV8wqwPejI81BjZThvheAHsQytwbnlSl4ffIoay7p9/+M= 静静@LAPTOP-99HKOQPP
  6. 3.git本地中配置ssh地址
  7. $ git remote add origin git@github.com:tornadoweb/tornado.git//GitHub中use SSH地址
  8. 4.以后使用
  9. $ git push origin master

git自动管理凭证

3.3git忽略文件

可以在github文件中直接搜索gitignore,搜索参考文档

  1. $ vim .gitignore//创建.gitignore文件
  2. 在.gitignore文件中键入不想管理的文件
  3. files/ //会忽略files文件夹下的所有文件
  4. a.html //取反
  5. *.py[a|b|c]//忽略所有的.pya .pyb .pyc

更多参考:https://github.com/github/gitignore

3.4任务管理相关

issues:文档以及任务管理

wiki:项目文档

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议