前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git管理源代码

Git管理源代码

作者头像
小闫同学啊
发布2019-07-18 11:29:24
2.8K0
发布2019-07-18 11:29:24
举报
文章被收录于专栏:小闫笔记小闫笔记

Git管理源代码

1.前情回顾

session[key]=value是默认存储在服务器内部的

flask-session使用步骤:

1/from flask-session import Session

2/设置session的配置信息到app中

class MyConfig(object):

共有四项配置信息

app.config["SECRET_KEY"] = "fdfdfdfd"app.config["SESSION_TYPE"] = "redis" #指定session的存储类型app.config["SESSION_REDIS"] = StrictRedis() #指定redis服务器的地址app.config["SESSION_USE_SIGNER"] = True#设置session的签名信息app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(seconds=10) #设置session在redis中的存储时间

3/读取app中的session配置信息到Session中

2.git介绍

目的:使用分布式系统管理源代码,还可以多人协同开发

作者:Linux

上线时间:2005年

3.git区域介绍

工作区:代码的增删改,可以是我们的pycharm

暂存区:临时存放代码的,一旦提交就没有了

仓库区:用来记录所有操作过程的,都会备份成版本,并永久存在

4.git单人操作

git diff HEAD HEAD^ -- XXX.py写了xxx.py就是看本文件不同版本的不同,不指定文件,就是所有文件的不同点(注意--和文件名之间有空格)

git init切换到创建的git文件夹,然后对所建的文件夹进行初始化

git status查看工作区的状态

git add .或者是文件名添加工作区的文件到暂存区(文件名变成绿色就是保存到了暂存区,红色代表在工作区)

git commit -m '注释'将暂存区的内容提交到仓库区

git commit -am '注释'将工作区-->暂存区--->仓库区

git config user.name '用户名'设置提交作者的名称

git config user.email '邮箱'设置提交作者的邮箱

git log/reflog查看仓库区的版本历史

git reset --hard HEAD^(HEAD~1) 版本号回退版本

git diff 版本1 版本2 -- 文件名比较文件不同版本的区别(注意--和文件名之间有空格)

git rm 文件名使用git删除文件

git reset --hard HEAD^

撤销工作区的内容:git checkout 文件名

撤销暂存区:git reset HEAD 文件名

5.git多人操作

目的:多个人来维护同一份代码

步骤:

1/先克隆git clone 项目地址,克隆之后进入到克隆的文件夹中

2/需要改一下名字和邮箱

3/将工作区-->暂存区--->仓库区

4/提交到gitee远程仓库中git push

5/其他人用的时候也需要先克隆

6/然后进入到克隆的文件夹中,也需要改一下名字和邮箱.

7/其他人更改之后提交到远程仓库

8/想看到其他的代码,不需要克隆了,只需要拉下来git pull

命令:

git clone 地址 将远程仓库的代码克隆到本地

git push将本地仓库的代码推送到远程

git pull将远程仓库的代码更新到本地

6.冲突问题

目的:了解冲突的产生过程,以及解决办法

rejected拒绝

产生原因:就是比如经理和我同时更改,但是经理提交的比较快,经理改正之后,我没有及时的更新服务器,还是之前的版本,然后提交的时候就被拒绝了.我们在提交的时候必须保证本地的版本和服务器的版本是一致的.这个时候我们可能需要将远程的代码pull下来,但是合并之后的文件里面有提示信息,就是经历修改的,和我自己修改的,以及git自动生成的一些提示信息,当出现冲突的时候,去和经理商量冲突的问题是按自己的解决方案还是经理的解决方案,商量之后,可以再提交提交的时候一定不要有一些乱七八糟的提示信息,要不然会出现问题

7.冲突分析&问题解决

其实在工作中,每个人都是负责不同的模块,所以冲突问题很少有,所以不能去修改同事的代码.而且我们在工作中,下班的提交要赶紧提交,要不然太晚,出现问题,同事都回家了,没人商量了,减少问题.上班前第一件事就是pull拉下来

冲突的产生:

1/一直写不提交

2/擅自修改同事的代码

8.标签的使用

目的:当一个大的版本完成之后需要做好记录和备份,可以使用标签

设置本地标签:git tag -a 标签名 -m 描述

推送本地标签到远程:git push origin 标签名

删除本地标签:git tag -d 标签名

删除远程的:git push origin --delete tag 标签名

9.分支使用

分支作用:

1/碰到了难题

目的:

开辟一个分支专门解决项目中遇到的难题,方便我们继续进行开发,当解决完了,再将分支合并.

还有一种情况,就是当公司一个新同事来的时候,新建一个分支,让他在分支上开发所需要的功能,如果功能能用,就将这个分支合并到项目里,如果不能用,或者很糟糕,直接删除即可,不会影响项目的开发.

自分支刚开始是和主分支完全一样的,因为是从主分支分离的

合并的操作是从主分支里面进行操作的

代码:

查看当前分支git branch

创建一个分支git checkout -b 分支

切换分支:git checkout 分支名

推送本地分支到远程:git push -u origin 分支名

合并分支:git merge 分支名(注意:需要在master执行合并操作.)

修改已经commit的注释内容:

1/先切换到想要修改内容的版本

2/然后输入git commit --amend做对应的修改,control + x退出保存

10.dict和json相互转换(记忆)

在程序员里,前台和前端是一个意思.后台和后端也是一个意思.

json数据:"{'name':'zhangsan','age':'10'}"

需要from flask import json导入一下

1.json转换成字典

dict = json.loads(json)

2.字典转成json:

json = json.dumps(dict)

代码语言:javascript
复制
"""
10,dict和json相互转换

- json数据: "{'name':'zhangsan','age':10}"

- 1.字典转成json
  - json = json.dumps(dict)


- 2.json转成字典
  - dict = json.loads(json)


"""
# import json
from flask import json

#1.字典转成json
dict = {
    "name":"banzhang",
    "age":29
}
json2 = json.dumps(dict)
print(json2)
print(type(json2))


#2.json转成字典
dict2 = json.loads(json2)
print(dict2)
print(type(dict2))

11.断点调试

目的:快速找出bug(臭虫/问题/缺陷)找bug的过程称为debug

在pycharm中用debug打断点的时候,类名或者类里面,不要打断点.视图函数名那一行也不要打断点,可以打在视图函数的内部非注释的地方.

控制台frames中点一下第一个我们工程的名字,可以快速找到断点.

frames左侧两个圆那个按钮点一下会找到所有的断点,在新窗口中减号是删除的意思.

12.新经咨询git管理

添加开源许可证,保护我们的东西不被别人商业化,

如果有的文件是不需要提交的,可以设置忽略文件,比如.idea是我们的pycharm配置信息,在目录下输入touch .gitignore然后打开.gitignore文件,将文件名放入这个文件里,然后提交就好了.(还有.pyc和.pyo(连接c语言)和.pyd(动态库)一般也是忽略的,可以统一写成.py[cod])

我们在pycharm中如果写完后,可以直接提交到git中,在菜单栏中依次点击

VCS---->commit

13.数据库配置

目的:为了在项目中用来存储新闻数据以及用户数据

代码语言:javascript
复制
from flask_sqlalchemy import SQLAlchemy

...class Config(object):
    """工程配置信息"""
    DEBUG = True
    # 数据库的配置信息
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/information"
    SQLALCHEMY_TRACK_MODIFICATIONS = Falseapp.config.from_object(Config)
db = SQLAlchemy(app)

14.redis配置

目的:缓存访问频率高的内容,存储session信息,图片验证码,短信验证码

代码语言:javascript
复制
import redis
...class Config(object):
    """工程配置信息"""
    ...    # redis配置
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379app.config.from_object(Config)
db = SQLAlchemy(app)
redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)

15.session配置

目的:将来用来保存用户的登录信息

代码语言:javascript
复制
from flask_session import Session
...class Config(object):
    """工程配置信息"""
    SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"
    ...    # flask_session的配置信息
    SESSION_TYPE = "redis" # 指定 session 保存到 redis 中
    SESSION_USE_SIGNER = True # 让 cookie 中的 session_id 被加密签名处理
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT) # 使用 redis 的实例
    PERMANENT_SESSION_LIFETIME = 86400 # session 的有效期,单位是秒app.config.from_object(Config)
...
Session(app)

16.CSRFProtect配置

目的:保护app,防止CSRF攻击

校验的请求方式:POST,PUT,PATCH,DELETE

代码语言:javascript
复制
from flask_wtf.csrf import CSRFProtect
...
app.config.from_object(Config)
...
CSRFProtect(app)

同源策略:不同网站之间的cookie不共享

xss可以获取到不同网站之间的cookie

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈技术精选 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Git管理源代码
    • 1.前情回顾
      • 2.git介绍
        • 3.git区域介绍
          • 4.git单人操作
            • 5.git多人操作
              • 6.冲突问题
                • 7.冲突分析&问题解决
                  • 8.标签的使用
                    • 9.分支使用
                      • 10.dict和json相互转换(记忆)
                        • 11.断点调试
                          • 12.新经咨询git管理
                            • 13.数据库配置
                              • 14.redis配置
                                • 15.session配置
                                  • 16.CSRFProtect配置
                                  相关产品与服务
                                  验证码
                                  腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档