luffy__导出项目依赖,,软件开发模式,,git介绍和安装,,git gitlab gitee github介绍 ,,git使用流程__常用命令,,get log和gir reglog区别,,版本回退 git reset-hard,,git忽略文件,,多分支
# 1 二次封装Respons -djang:4个 -drf:Response -自己封装 # 2 封装5个视图扩展类 # 3 开启media访问 -1 配置加入下面--->上传文件(ImageField,FileField),会自动传到 media文件夹下的 to的路径 MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = 'media/' -2 在总路由中配置 path('media/<path:path>', serve, kwargs={'document_root': settings.MEDIA_ROOT}), 127.0.0.1:8000/media/banner/a.png path: banner/a.png---->document_root配置的目录去找文件 # 4 vue create luffy_city -vue-router -vuex -vue2 # 5 前端配置 -1 配置全局样式--》标签都有默认样式 -2 配置全局settings--》导出一个对象,对象中放了BASE_URL -放到 import settings from "@/assets/js/settings"; Vue.prototype.$settings = settings -以后通过 this.$settings.BASE_URL -3 安装并使用axios -1 安装 -2 放到原型中 import axios from "axios"; Vue.prototype.$axios = axios -3 拦截器 http/index.js -4 使用elementui -5 使用 bootstrap5 - 安装:cnpm install bootstrap@5 - main.js配置 import 'bootstrap/dist/css/bootstrap.min.css' -以后跟之前用bootstrap一样 -6 bootstrap-vue---组件 -7 vue-cookies -main.js中 import cookies from 'vue-cookies' Vue.prototype.$cookies = cookies; -以后再任意组件中 this.$cookies.set this.$cookies.get # 6 axios 拦截器写法 1 http/index.js 看下面 2 main.js中配置 import axios from '@/http' Vue.prototype.$axios = axios 3 使用 this.$axios.get('/home/banner/').then(res => { this.bannerList = res.results }) # 7 后台主页功能 -查询所有轮播图接口 # 8 用户自定义配置---》所有配置文件必须大写 from .common_settings import * # 以后用: from django.conf import settings Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')[:settings.BANNER_COUNT] 问? 如果自定义配置中得变量是小写的,以后能这么用吗? # 不能!!!!! #common_settings.py name='lqz' # 以后能这样取吗? from django.conf import settings settings.name # 9 前端首页 -Header.vue--->布局有问题 -.nav { display: block; } -Footer.vue -Banner.vue--》跳转的路径可能是自己的,也可能是外部 -HomeView.vue -flex 布局 # 10 跨域问题 -浏览器的同源策略 -当前 域 :协议[http/https/ftp] ,地址[ip地址,域名],端口 -解决跨域 -cors:跨域资源共享:响应头中加入东西 -代码 -nginx -jsonp技术 -前端代理(测试阶段会用) -自己解决:中间件---》通用方案 -第三方:只能用在django中 # 11 xss:跨站脚本攻击 csrf:跨站请求伪造 cors:跨域资源共享
import axios from "axios"; import router from "../router"; import Element from "element-ui" axios.defaults.baseURL = "http://127.0.0.1:8000/api/v1" //创建请求对象 //指定超时时间为5000毫秒 //指定请求头中编码格式为application/json const request = axios.create({ timeout: 5000, headers: { 'Content-Type': "application/json; charset=utf-8" } }) //在请求发出之前进行拦截, // 从localStorage中取出token携带在请求头中 request.interceptors.request.use(config => { config.headers['Authorization'] = localStorage.getItem("token") return config }) //在请求响应后进行拦截, // 如果响应数据中的status为100,表示成功,不做处理,如果不是100,使用elementui显示错误信息 // 如果响应对象的状态码为401,重定向到登陆页面,只要有错误,就打印错误信息 request.interceptors.response.use( response => { console.log("response ->" + response) let res = response.data if (res.code === 100) { return response.data } else { Element.Message.error(!res.msg ? '请求服务器异常,请联系管理员' : res.msg) return Promise.reject(response.data.msg) } }, error => { console.log(error) if (error.response.data) { error.massage = error.response.data.msg } if (error.response.status === 401) { router.push("/login") } Element.Message.error(error.massage, {duration: 3000}) return Promise.reject(error) } ) export default request
# 以后项目给别人---》项目装了哪些模块[模块版本]--》别人用是不知道的---》需要导出项目依赖---》放在项目路径下---》以后在运行项目前--》先安装依赖[版本号要对应] # 一般约定俗成都叫 requirements.txt,但是会有别的 req.txt dev.txt # 两种方式: 1 虚拟环境---》所有装的第三方,都应该是该项目的依赖---》直接导出虚拟环境的所有第三方模块即可 pip freeze > requirements.txt 2 不需要管是虚拟环境还是真实环境---》只会导出项目的依赖 pip install pipreqs pipreqs . --encoding=utf-8 # 如果不全,手动补一下
# 1 瀑布开发 -软件设计---》分任务开发[很久]---》测试--》上线 # 2 敏捷开发 -软件分板块--》 版块设计[用户]---》分任务开发---》测试-->上线 版块设计[订单]---》分任务开发---》测试-->上线 版块设计[商品]---》分任务开发---》测试-->上线 -整体测试 -上线
# 软件开发一个功能后---》把代码提交到某个位置---》大家都能拿到 # 首页功能开发完了--->提交到git # 现在存在的问题 1 多人在同一项目上开发---》代码合并--》多人协同开发 2 做版本管理--》版本回退,查看。。。 # SVN 、 GIT 能完成上述操作 -svn 比较老,用的公司不多 -git比较流行 # git是什么? 版本控制[软件] - 控制的对象是文件 # 下载: https://git-scm.com/downloads -win:Git-2.43.0-64-bit.exe 下载,一路下一步安装即可 -mac:双击安装 -安装完成:点右键,多出两个命令 git bash here # 会常用 git gui here # 用的少 -打开命令行: git -v
# git
-软件,做版本管理的,分不同平台(win,mac)
# github
-网站,git远程代码仓库,全球最大的开源代码托管平台,全球最大的开源代码仓库
# gitee(小公司,私有仓库)
-国内最大的开源代码托管平台
# gitlab(公司内部这个多)
-公司内部的远程仓库
# bitbucket 给公司做代码托管的,没有开源
# git 有三个区 工作区:某个文件夹,在文件夹 新增,修改,删除,更新 文件--》用户操作的位置 暂存区:工作区的变更---》提交到暂存区 版本库:把暂存区内容---》提交到版本库---》文件就被版本管理了--》回退到某个版本 远程仓库:第三方:github,gitee,gitlab # 工作流程:三个区的来回操作 # 常用命令 1 初始化仓库:git init # 创建出一个 .git 文件夹--》不要删,删除仓库记录都没了 新建文件夹:lqz ---》git bash here---》打开termial--》输入linux命令 ls mkdir 2 查看仓库状态 git status 3 在工作区,新建 s1.py,加入一行代码 4 把变更提交到暂存区 git add 文件名 # 提交当前文件的变更 git add . # 所有变更都提交 5 把暂存区提交到版本库 git commit -m '注释,必须加' 6 查看版本记录 git log git reflog -----了解---------- 6 git checkout . # 把工作区变更回退(还没放到暂存区) 7 git reset --soft 版本号 # 唯一表示,可以不写全,短一些 git reset --soft 05125c7 # 上一个版本号 8 git reset --mix 2b8766f767 # 把版本库拉回到工作区
# 1 初始化仓库 ---仓库目录下会出现 .git 文件夹--》文件夹千万不要删除 git init # 初始化当前文件夹 git init 文件夹 # 在当前文件夹下创建文件夹,并把新创建的文件夹作为仓库 # 2 查看仓库状态 git status git status -s #查看仓库状态的简约显示 # 红色:工作区有变更,但是没有提交到暂存区 # 绿色:工作区变更提交到暂存区,但是没有提交到版本库---》还没有被版本管理起来 # 白色:所有变更都被版本管理了 # 3 把工作区变更提交到暂存区 git add 文件名 文件夹 git add . # 所有变更 # 4 把暂存区提交到版本库 git commit -m '注释' # 只要提交一次,就会有个版本号,以后根据版本号我们可以回退到任意版本 # 5 设置用户名和邮箱--》一般写在git init之后,只设置一次 # 全局设置 git config --global user.name '用户名' git config --global user.email '用户邮箱' # 局部设置: git config user.name 'xxx' git config user.email '4@qq.com' # 6 查看版本日志 git log # 能看到用户:lqz <3306@qq.com> git reflog ----------了解------------- # 7 撤销工作区变更 git checkout . -- 撤销所有暂存区的提交 git checkout 文件名 -- 撤销某一文件的暂存区提交 # 8 撤销暂存区提交:add的逆运算 >: git reset HEAD . -- 撤销所有暂存区的提交 >: git reset 文件名 -- 撤销某一文件的暂存区提交 # 9 git log 更多 查看时间点之前|之后的日志: >: git log --after 2018-6-1 >: git log --before 2018-6-1 >: git reflog --after 2018-6-1 >: git reflog --before 2018-6-1 查看指定开发者日志 >: git log --author author_name >: git reflog --author author_name # 10 回滚到指定版本: 回滚到上一个版本: >: git reset --hard HEAD^ >: git reset --hard HEAD~ 回滚到上三个版本: >: git reset --hard HEAD^^^ >: git reset --hard HEAD~3 回滚到指定版本号的版本: >: git reset --hard 版本号 (重点) >: eg: git reset --hard 35cb292
# git log commit 7884b345a03ec8a1dfae5976d3e1c4ec55a2f785 (HEAD -> master) # 版本号 Author: xxx <4@qq.com> # 作者 Date: Mon Jan 22 12:29:13 2024 +0800 # 日期 xxx # 注释 # 如果做了代码回撤---》这里的日志看不到,就通过git reflog来查看
回滚到上一个版本: >: git reset --hard HEAD^ >: git reset --hard HEAD~ 回滚到上三个版本: >: git reset --hard HEAD^^^ >: git reset --hard HEAD~3 回滚到指定版本号的版本: >: git reset --hard 版本号 (重点) >: eg: git reset --hard 35cb292 # 只要是被版本管理了,后期我们可以回退到任意版本
# 在仓库中,某些文件或文件夹,不期望被git管理,不被版本管理 -node_models -.idea -.vscode -__pycache__ :为了加快执行效率---》解释器会把py文件,只要执行过,就编译成views.cpython-38.pyc---》以后再运行,直接运行这个文件,速度快 -项目的日志文件 # 在仓库目录下新建一个文件:.gitignore 标明哪些不被git管理,标明语法如下: -如果是文件,直接写文件名 -如果是文件夹,直接写文件夹名 # 具体如下 """ 过滤文件内容 文件或文件夹名:代表所有目录下的同名文件或文件夹都被过滤 /文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤 例如: a.txt:项目中所有a.txt文件和文件夹都会被过滤 /a.txt:项目中只有根目录下a.txt文件和文件夹会被过滤 /b/a.txt:项目中只有根目录下的b文件夹下的a.txt文件和文件夹会被过滤 *x*:名字中有一个x的都会被过滤(*代表0~n个任意字符) 空文件夹不会被提交,空包会被提交,包可以被提交(包中有一个init空文件) 注意: # 以'#'开始的行,被视为注释. # 忽略掉所有文件名是 lqz.txt的文件. lqz.txt # 忽略所有生成的 html文件, *.html # lqz.html是例外,不在忽略范围内 !lqz.html # 忽略所有.o和 .a文件. *.[oa] """ ## 后端项目的忽略文件 luffy.log __pycache__ *.pyc .idea scripts .vscode **/migrations/*.py !**/migrations/__init__.py #### 空文件夹不被git管理 log __init__.py luffy.log *.log
# 以后再创建分支之前---》先保证 所有文件都被git管理起来 # 1 创建分支 git branch dev # 创建一个dev分支 # 2 查看分支 git branch * master # 只有一个master分支 # 3 切换分支 git checkout dev # 切换到dev分支 # 4 删除分支(不能自己删自己) git branch -d dev # 5 合并分支 -切换到master上 -git merge dev # 把dev合并到当前分支
# 远端的一个服务器 -github -gitee:讲课---》 -gitlab # 注册gitee账号 # 新建仓库 # 在本地执行 git config --global user.name "liuqingzheng" git config --global user.email "306334678@qq.com" # 已有仓库 cd lqz git remote add origin https://gitee.com/liuqingzheng/lqz2.git # 添加远程仓库地址 git push origin master
浙公网安备 33010602011771号