一、概念
1.软件开发的生命周期(简约版)
- 项⽬⽴项–>需求调研–>需求拆解–>交给不同的开发进⾏开发–>测试环境测试–>部署⽣产环
境。
2.环境的概念
- 开发环境:开发电脑所使用的环境。一般看是什么工程师(java、go、python)
- 测试环境:一般由测试人员自己来部署,然后在该环境经行测试。((必不可少 -->系
统、软件、版本等,都和⽣产环境⼀致。) - 预⽣产环境:测试到⽣产环境的⼀个过渡。 ( 连接的是⽣产库。 与⽣产的域名不同。
test.jd.com) ,保证产品的质量。 - ⽣产环境:即线上环境,⽤户使⽤的环境,⼀般是运维在维护,其他⼈员⼏乎⽆权限。
3.环境和环境之间的代码是如何部署的
- 手动:效率低、⼲扰因素多、不安全
-
- rz的方式
-
- scp、xftp的方式等等
-
- 登录到代码托管平台,svn pull、git pull。
- 缺陷:
-
- 全程运维参与,占用大量时间。
-
- 如果节点多,上线速度慢。
-
- 认为失误多,目录管理混乱。
-
- 回滚不及时,或者难以回退。
- 自动:效率高、干扰较为少、安全
-
- 持续集成(简单⼯作、产品能快速迭代、保证⾼质量的产品。)
- 持续集成(简单⼯作、产品能快速迭代、保证⾼质量的产品。)
-
- 持续交付
- 持续交付
- 持续部署
- 完整代码发布流程
二、git分布式版本控制软件
第一阶段:单兵作战
#你是谁,你的邮箱是,配置颜⾊
[root@git dy]# git config --global user.email "552408925@qq.com"
[root@git dy]# git config --global user.name "oldxu"
[root@git dy]# git config --global color.ui true
[root@git ~]# mkdir dy
[root@git ~]# cd dy/
[root@git dy]# git init #将⽬录初始化为git的仓库
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "描述信息"
[root@git dy]# git log #查看提交的历史记录
第二阶段:开发新功能
[root@git dy]# vim index.html
[root@git dy]#
[root@git dy]# git add .
[root@git dy]# git commit -m "直播功能上线"
[master 7285d97] 直播功能上线
1 file changed, 1 insertion(+)
第三阶段:再次上线新功能
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "约饭功能上线."
[master a901f68] 约饭功能上线.
1 file changed, 1 insertion(+)
回退功能或者重新上线
[root@git dy]# git log
#回到直播功能
[root@git dy]# git reset --hard 7285d97a63fe259a2fdcda7ef5bc91d5e400dc15
HEAD 现在位于 7285d97 直播功能上线
[root@git dy]# cat index.html
#
1.完成抖⾳短视频功能
2.完成直播功能
##重新上线约饭功能
[root@git dy]# git reflog
7285d97 HEAD@{0}: reset: moving to 7285d97a63fe259a2fdcda7ef5bc91d5e400dc15
a901f68 HEAD@{1}: commit: 约饭功能上线.
7285d97 HEAD@{2}: commit: 直播功能上线
0838f2b HEAD@{3}: commit: adasdas
83d2495 HEAD@{4}: commit (initial): 短视频功能开发完毕
[root@git dy]#
[root@git dy]#
[root@git dy]# git reset --hard a901f68
HEAD 现在位于 a901f68 约饭功能上线.
[root@git dy]# cat index.html
#
1.完成抖⾳短视频功能
2.完成直播功能
3.约饭功能完成
总结
git init #初始化⼀个⽬录为git版本库
git add . #将没有被管理的⽂件,加⼊git管理,添加到暂存区
git commit -m "描述" #将暂存区的⽂件提交到版本库中,进⾏版本的管理
git log #查看提交的历史记录
git reflog #查看git提交的所有历史记录
git status #查看当前的⽂件管理状态(已提交|未提交)
git reset --hard commitID #回退到指定的提交版本记录
第四阶段:游戏功能&bug修复
分支:
[root@git dy]# git branch game
[root@git dy]# git branch
game
* master
[root@git dy]# git checkout game
切换到分⽀ 'game'
[root@git dy]# cat index.html
#
1.完成抖⾳短视频功能
2.完成直播功能
3.约饭功能完成
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "游戏完成20%-c3"
[game e2f86a8] 游戏完成20%-c3
1 file changed, 2 insertions(+)
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "游戏完成50%-c4"
[game 3b3f2fc] 游戏完成50%-c4
1 file changed, 1 insertion(+)
修复bug
[root@git dy]# git branch bug
[root@git dy]# git checkout bug
切换到分⽀ 'bug'
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "约bug修复-c5"
[bug 0861ff4] 约bug修复-c5
1 file changed, 1 insertion(+), 1 deletion(-)
[root@git dy]# git checkout master
切换到分⽀ 'master'
[root@git dy]# git merge bug #站在master分⽀合并bug分⽀已提交
的最新代码
更新 a901f68..0861ff4
Fast-forward
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[root@git dy]# git checkout game
切换到分⽀ 'game'
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "游戏完成100%"
[game d0790cc] 游戏完成100%
1 file changed, 1 insertion(+)
[root@git dy]# git merge master
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "bug修复-游戏-c8"
[game a9d322f] bug修复-游戏-c8
[root@git dy]# git checkout master
[root@git dy]# git merge game
更新 0861ff4..a9d322f
Fast-forward
index.html | 4 ++++
1 file changed, 4 insertions(+)
第五阶段:进军三里屯
#1.准备中⼼服务器
# gitee ( 开源的,注册即可使⽤ )
( Linux 模拟 家)
( MacOS | Windows-git-bash客户端 模拟三⾥屯 )
1.安装windows的git客户端
2,注册⼀个gitee的账户,并登陆
第一天上班前在家上传代码(Linux)
1. 给远程仓库起别名
git remote add origin 远程仓库地址
2. 向远程推送代码
git push -u origin 分⽀
初次在公司新电脑下载代码(MacOS|Windows)
xudeMacBook-Pro:douyin xuliangwei$ git clone
https://gitee.com/oldboy_oldxu/douyin.git
xudeMacBook-Pro:douyin xuliangwei$ #编辑index⽂件
xudeMacBook-Pro:douyin xuliangwei$ git add .
xudeMacBook-Pro:douyin xuliangwei$ git commit -m ""
xudeMacBook-Pro:douyin xuliangwei$ git push origin master
下班回家继续写代码(Linux)
[root@git dy]# git pull origin master
如何推送其他分支代码
[root@git dy]# git checkout game
[root@git dy]# vim index.html
[root@git dy]# git add .
[root@git dy]# git commit -m "game⼤改动"
[root@git dy]# git push origin game
知识补充和总结
git pull origin master| dev | game #拉取代码,合并代码
等价于
git fetch origin dev #拉取代码
git merge origin/dev #合并代码
小总结:
添加远程连接(别名)
git remote add origin 地址
git remote -v
git remote remove origin #删除当前origin这个别名 (相当于本地版本库与中⼼版本库取消关联)
推送代码
git push origin 分⽀名称
下载代码
git pull origin 分⽀名称
相当于
git fetch origin 分⽀名称
git merge origin/分⽀名称
第六阶段:其他知识补充
- 1.tag标签(commitID的别名而已)
[root@git dy]# git tag -a v1.1 -m "周年活动" #基于当前最新的commitid打标签
[root@git dy]# git tag
v1.1
[root@git dy]# git push origin v1.1
Username for 'https://gitee.com': 552408925@qq.com
Password for 'https://552408925@qq.com@gitee.com':
[root@git dy]# git tag -a v0.5 c67f593 -m "游戏完成百分之百,做⼀个标签记录"
[root@git dy]# git push origin v0.5
- 2.免密登录
- url中体现
原来的地址:https://gitee.com/oldxu/treenb.git
修改的地址:https://⽤户名:密码@gitee.com/oldxu/treenb.git
git remote add origin https://⽤户名:密码@github.com/oldxu/treenb.git
git push origin master
- ssh中实现
将我们的公钥添加到gitee上,就可以实现免密登陆。
[root@git dy]# git remote -v
origin https://gitee.com/oldboy_oldxu/douyin.git (fetch)
origin https://gitee.com/oldboy_oldxu/douyin.git (push)
[
[root@git dy]# git remote remove origin
[root@git dy]# git remote -v
[root@git dy]# git remote add origin
git@gitee.com:oldboy_oldxu/douyin.git
[root@git dy]# git remote -v
origin git@gitee.com:oldboy_oldxu/douyin.git (fetch)
origin git@gitee.com:oldboy_oldxu/douyin.git (push)
[root@git dy]# git push origin master #⽆需密码
- 3.git中的.gitgnore文件
#忽略⼀些⽂件,
[root@git dy]# cat .gitignore
*.pyc
https://github.com/github/gitignore