Blogger Information
Blog 22
fans 0
comment 1
visits 17920
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
第十二模块:开发常用工具(选修)
刘静的博客
Original
1028 people have browsed it

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:项目文档

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post