一、协同开发

1)作为开发者,第一次同步项目(前台已经是项目开发者了)
>: git clone 项目地址

2)保证自己本地有dev分支,且与远程仓库版本同步(没有就自己新建)

3)本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互

4)交互顺序:必须先拉(pull)后提(push)

5)必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互
>: git checkout dev
>: git add .
>: git commit -m '本次提交的信息提示'
>: git pull origin dev
>: git push origin dev

二、冲突解决

2.1 新建dev分支,切换到dev

# 新建分支
    git branch dev
    git checkout dev

2.2 dev分支下,修改dev.py文件第一行,提交到版本库

# 在第一行加入print
    git add .
    git commit -m '我修改了dev分支下的dev.py,添加了一行打印语句'

2.3 切换到master主分支,修改dev.py第一行,提交到版本库

# 切换到master分支
    git checkout master
# 在第一行加入print
    git add .
    git commit -m '我修改了master分支下的dev.py,添加了一行打印语句'

2.4 合并代码,会出现冲突,解决冲突,并重新提交

# 合并代码
    git merge dev 
# 会报错,因为有冲突,解决
    git add .
    git commit -m '我解决了冲突'   

2.5 解决过程思路

# 产生冲突的原因

1)在远程仓库和本地仓库版本不一致时,拉取远程仓库版本到本地时,两个版本进入融合,可能会出现版本冲突

2)定位冲突文件冲突代码,线下沟通冲突代码,整合代码解决冲突

3)将解决冲突后的代码重新提交到本地版本库

4)再拉去远程仓库,直到没有冲突,提交本地版本库到远程

# 冲突的格式如下:

    """
    <<<<<<< HEAD  # 冲突的开始
    # 自己的代码
    =======  # 分割线
    # 别人的代码
    >>>>>>> b63c408abd05b87fc492d40523240561999dba50  # 冲突的结束(版本)
    """

# 解决方法:

1)删除冲突相关标识:冲突的开始、分割线、冲突的结束(版本)
2)线下沟通,根据实际需求完成代码整合
3)测试整合后的代码



# 出现冲突的前提:

1)不同开发者同时操作了同一文件
2)并且在相同行写了代码
强调:有业务交际时,版本合并不一定会出现冲突相关的标识,但是可能会带着代码运行崩溃,所有理论上每一次版本合并,都要测试合并后的所有功能(极其之少的情况)

三、远端分支合并

3.1 远程建立分支

# 登录Gitee账号,个人主页--------->仓库----------->点击操作
	https://gitee.com/dashboard

3.2 远程分支拉取到本地

# 远程分支拉取到本地,如果本地原来有dev先删除
    git branch -D dev   # 删除本地原有的dev分支
    git pull origin dev # 拉取远程dev分支到本地
    git checkout dev    # 切换到dev分支

3.3 本地dev分支增加代码

# 在dev分支上增加代码,任意文件中添加代码
    git add .   
    git commit -m '我修改了本地dev,,并且提交到了远程仓库'

3.4 本地dev分支提交远端

# 本地dev提交到远端
	git push origin dev

3.5 远程分支合并

四、使用pycharm操作Git

4.1 clone

4.2 git add

4.3 git commit

4.4 git push

4.5 git pull

4.6 git branch

4.7 git log

4.8 本地代码与版本库

五、开源项目贡献代码

# 为开源项目贡献代码
    1 看到开源项目,点fork,你的仓库就有这个开源项目了
    2 在本地拉取fork下来的代码
    3 你可以继续编写,然后提交到自己远程仓库
    4 提交pr合并代码,如果作者同意,你就可以合并进去了

六、浏览器发送请求到响应的流程

浏览器发送http请求先到nginx,nginx接收到浏览器发送过来的http请求并进行解析,分析url,如果是静态文件请求就直接返回nginx配置的静态文件目录,直接返回用户请求的静态文件。
如果不是静态文件的请求而是一个动态请求,那么nginx就将请求转发给uwsgi,uwsgi接收到请求之后并进行解析处理,处理成wsgi可以接收的格式,并发给wsgi,wsgi根据请求调用相应的API,也就是我们用框架(django,flask)写的接口,调用完之后把处理的返回值再交给wsgi,wsgi将返回值进行打包,打包成uwsgi能接收的格式,uwsgi接收wsgi发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器。
                                                                                                            
# 上述提到的解析,指的就是DNS域名解析
                                                                                                             
DNS域名解析过程:
    1 浏览器一开始会查找当前URL是否存在缓存(有不定的时间限制),并比较缓存是否过期,如果有就完成域名解析
    2 首先浏览器先检查本地hosts文件是否有这个网址映射关系,如果有就调用这个IP地址映射完成域名解析
    3 如果hosts里没有这个域名的映射则查找本地DNS解析器缓存是否有这个网址映射关系,有则返回完成域名解析
    4 如果本地hosts与DNS解析器缓存都没有对应的网址映射关系,那就会找本地dns服务器 


另外,如果部署了redis这种缓存数据库的话,浏览器向后端发送请求,在经过 Django 中间件之后,会先从缓存数据库寻找数据,如果没有则向后端数据库要数据。后端返回数据结果的同时在缓存数据库保存一份,类似于 DNS 的解析过程
    
缓存数据库的作用:提高效率和响应时间

原文地址:http://www.cnblogs.com/dy12138/p/16875350.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性