origin

[工具] Git版本管理(二)(分支)

感情迁移 提交于 2020-03-25 04:17:25
一、分支 1.git中如何保存版本 在我们以往使用文件来进行版本控制的时候,都是将上一个版本复制一份,然后在其基础上进行修改。 但在git中,git只保存当前版本和上一个版本之间的差异,这样可以节省存储空间, 在生成版本的时候速度也会更快。 2.Master主线 如下图所示: 当只有一条主线Master时,新版本都是在上一个版本的基础上进行修改的,例如Version2在Version1的100个文件基础上,新增了20个文件,并修改了其中10个文件。 也就是说Version2只需要保存新增的20个文件,以及修改的10个文件的修改信息,当我们需要Version2的时候,git再去Version1中拿未修改的90个文件。 同理,Version3、Version4也是如此。 3.分支概念 当我们需要已某个版本作为基准,同时开发多个新功能,则可能在该基准版本处产生分支,如下图所示: 处理线上系统的紧急BUG: 例如,Version3是已上线的版本, 我们在Version3的基础上开发新功能: Version3突然出现紧急BUG,需要修复,怎么办?我们可以在Version3的基础上新开一个分支,专门用作BUG修复,修复完后合并到主分支: 而负责新功能开发的分支,可以继续研发新功能,不受影响。等到新功能开发测试完毕后,也可以合并到主分支Master中去。 4.创建分支(开发新功能) 1

Http referer origin

无人久伴 提交于 2020-03-23 20:34:20
为了防止CSRF的攻击,我们建议修改浏览器在发送POST请求的时候加上一个Origin字段,这个Origin字段主要是用来标识出最初请求是从哪里发起的。如果浏览器不能确定源在哪里,那么在发送的请求里面Origin字段的值就为空。 隐私方面:这种Origin字段的方式比Referer更人性化,因为它尊重了用户的隐私。 1、Origin字段里只包含是谁发起的请求,并没有其他信息 (通常情况下是方案,主机和活动文档URL的端口)。跟Referer不一样的是,Origin字段并没有包含涉及到用户隐私的URL路径和请求内容,这个尤其重要。 2、Origin字段只存在于POST请求,而Referer则存在于所有类型的请求。 随便点击一个超链接(比如从搜索列表里或者企业intranet),并不会发送Origin字段,这样可以防止敏感信息的以外泄露。 在应对隐私问题方面,Origin字段的方法可能更能迎合用户的口味。 服务端要做的:用Origin字段的方法来防御CSRF攻击的时候,网站需要做到以下几点: 1、在所有能改变状态的请求里,包括登陆请求,都必须使用POST方法。对于一些特定的能改变状态的GET请求必须要拒绝,这是为了对抗上文中提到过的论坛张贴的那种危害类型。 2、对于那些有Origin字段但是值并不是我们希望的(包括值为空)请求,服务器要一律拒绝。比如

Js深度克隆解析

北城以北 提交于 2020-03-23 18:29:59
Js克隆(clone),就是数据拷贝,包括基础类型的数据和引用类型的数据,而深度克隆(deepClone)就是针对引用类型,如数组和对象。 两种拷贝的区别在于:浅拷贝时,拷贝出的对象指向原对象的地址,当其值发生改变时,原对象的值也发生改变;          深度拷贝,拷贝出的对象指向一个新的地址,当其值发生改变时,原对象的值不受影响。 下面列出深度拷贝的代码及其详细注释: var obj = {//待拷贝的对象 name:"abc", age:"123", card:['visa','master'], wife:{ name:"bcd", son:{ name:"aaa" } }, a:function(){} } function deepclone(origin , target){ var target = target || {}, tostr = Object.prototype.toString,//使用Object.prototype.toString.call方法进行对象和数组的区分,所以先将其进行存储以便使用 arr = '[object Array]'; for(var prop in origin){ if(origin.hasOwnProperty(prop)){//防止拷贝的对象从原对象的原型上取值 if(origin[prop] !== "null"

本地项目上传到github 报错“master -> master (non-fast-forward)”

蹲街弑〆低调 提交于 2020-03-23 13:03:34
首先安装好git ,这里推荐一个 廖老师 ,写的挺详细 接下来 第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令,此命令会在当前目录下创建一个.git文件夹。 git init 第二步:将项目的所有文件添加到仓库中 git add . 这个命令会把当前路径下的所有文件,添加到待上传的文件列表中。 如果想添加某个特定的文件,只需把.换成特定的文件名即可 第三步:将add的文件commit到仓库 git commit -m ‘注释语句’ 第四步:去github上创建自己的repository,点击个人头像旁边的加号 如下图所示: 点击New repository,填好所有信息后点击create repository就会进入到类似下面的一个页面,拿到创建的仓库的https地址 第五步:将本地的仓库关联到github上 git remote add origin https://自己的仓库url地址 第六步,上传代码到github远程仓库 git push -u origin master 执行完后,如果没有异常,等待执行完就上传成功了,中间可能会让你输入Username和Password,你只要输入github的账号和密码就行了. 第一次上传有可能会遇到push失败的情况,那是因为跟SVN一样,github上有一个README.md 文件没有下载下来 。我们得先 /*-

CORS跨域漏洞的学习

断了今生、忘了曾经 提交于 2020-03-23 12:03:28
最近斗哥在学习CORS的漏洞和相关的一些知识梳理,网站如果存在这个漏洞就会有用户敏感数据被窃取的风险。 0x00 从浏览器的同源策略说起 SOP,同源策略 (Same Origin Policy) ,该策略是浏览器的一个安全基石,如果没有同源策略,那么,你打开了一个合法网站,又打开了一个恶意网站。恶意网站的脚本能够随意的操作合法网站的任何可操作资源,没有任何限制。 (图片来自网络) 浏览器的同源策略规定:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。那么何为同源呢,即两个站点需要满足同协议,同域名,同端口这三个条件。 SOP是一个很好的策略,但是随着Web应用的发展,网站由于自身业务的需求,需要实现一些跨域的功能,能够让不同域的页面之间能够相互访问各自页面的内容。 CORS,跨域资源共享(Cross-origin resource sharing) ,是H5提供的一种机制,WEB应用程序可以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,就出现了跨域的现象。 0x01 跨域访问的一些场景: 1.比如后端开发完一部分业务代码后,提供接口给前端用,在前后端分离的模式下,前后端的域名是不一致的,此时就会发生跨域访问的问题。 2.程序员在本地做开发,本地的文件夹并不是在一个域下面,当一个文件需要发送ajax请求

OpenShift 3.11 all in one 安装失败

余生颓废 提交于 2020-03-23 00:11:10
TASK [openshift_service_catalog : Verify that the catalog api server is running] curl: (7) Failed connect to apiserver.kube-service-catalog.svc:443; Connection refused" Warning FailedMount kubelet, okd311 MountVolume.SetUp failed for volume \"service-catalog-ssl\" : secrets \"controllermanager-ssl\" not found" 1 storage_decorator.go:57] Unable to create storage backend: config (&{ /registry [ https://okd311:2379 ] /etc/origin/master/master.etcd-client.key /etc/origin/master/master.etcd-client.crt /etc/origin/master/master.etcd-ca.crt true true 0 {0xc4206ca000 0xc4206ca080} <nil> 5m0s 1m0s}),

fork, clone, add, commit, fetch, rebase, push流程测试

∥☆過路亽.° 提交于 2020-03-22 23:23:37
3 月,跳不动了?>>> 1. 假定原作者的名称叫gittest, 我叫uniquejava. 原作者新建了一个项目叫nocrazy。 于是路径为gittest/nocrazy 做了两次提交 提交一: a.txt this is a 提交二:b.txt this is b. 2. 我cyper某天fork了这个项目,于是有origin指向uniquejava/nocrazy, 并且新增一个upstream指向原作者gittest/nocrazy $ git clone https://git.oschina.net/uniquejava/nocrazy.git $ cd nocrazy ➜ nocrazy git:(master) $ git remote add upstream https://git.oschina.net/gittest/nocrazy.git ➜ nocrazy git:(master) $ git remote -v origin https://git.oschina.net/uniquejava/nocrazy.git (fetch) origin https://git.oschina.net/uniquejava/nocrazy.git (push) upstream https://git.oschina.net/gittest/nocrazy

git远程操作

旧街凉风 提交于 2020-03-22 10:55:07
3 月,跳不动了?>>> 拉取远程分支 git checkout origin/远程分支名 -b 本地分支名或者 git fetch origin branchname:branchname Git可以有多个remote,默认remote为origin,下面出现的origin的含义相同 推送远程分支 git push origin 本地分支名:远程分支名 推送当前分支 git push -u 删除本地分支 git branch -d 分支名 如果要删除的分支下有为push的commit则无法删除,可以用-D代替-d强制删除 删除远程分支 git push origin --delete 远程分支名 删除tag:git push origin --delete tag tagname pull git pull origin 远程分支名:本地分支名 git pull --rebase origin 远程分支名:本地分支名 来源: oschina 链接: https://my.oschina.net/u/2281329/blog/602178

跨域资源共享 CORS 详解以及IIS中的配置方法

随声附和 提交于 2020-03-22 05:35:20
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。 它允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了AJAX只能同源使用的限制。 本文详细介绍CORS的内部机制。 一、简介 CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。 整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。 因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。 二、两种请求 浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。 只要同时满足以下两大条件,就属于简单请求。 (1) 请求方法是以下三种方法之一: HEAD GET POST (2)HTTP的头信息不超出以下几种字段: Accept Accept-Language Content-Language Last-Event-ID Content-Type:只限于三个值 application/x-www-form

Git 工作流的正确打开方式

白昼怎懂夜的黑 提交于 2020-03-21 22:35:28
Git 工作流的正确打开方式 作者: @Ryan-Miao 本文为作者原创,转载请注明出处: http://www.cnblogs.com/woshimrf/p/git-workflow.html 目录 1.1.创建仓库 1.2. 模拟用户A 1.3. 模拟用户B 1.4. 模拟用户A 1.5. 模拟用户C 1.6. 模拟用户B 1.7. 模拟用户C 2.1 模拟用户C 2.2 模拟用户D 2.3 C继续开发 2.4 D继续开发 2.5 C 提交 2.6 C 提PR 2.7 C修改再push 2.8 C发现提交次数过多,历史太乱,合并部分历史 2.9 C再次push 2.10 新的merge方式: rebase 2.11 这时候D也完成了 2.12 提交前rebase 最终结果 前言 一直在使用git做版本控制,也一直工作很顺利,直到和别人发生冲突的时候。这才注意到git 工作流并不是那么简单。比如,之前遇到的 清理历史 。百度到的资料很多,重复性也很多,但实践性操作很少,我很难直接理解其所表达的含义。直接望文生义经常得到错误的结论,只能用时间去检验真理了,不然看到的结果都是似懂非懂,最后还是一团糟。 学习git工作流 1. 最简单的使用,不推荐 1.1.创建仓库 $ pwd /home/ryan/workspace/l4git-workflow $ touch readme.md