<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>配置 &#8211; 个人随笔</title>
	<atom:link href="/label/%E9%85%8D%E7%BD%AE/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sat, 23 Jun 2018 10:45:06 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>/wp-content/uploads/2022/01/cropped-截屏2022-01-01-18.57.09-32x32.png</url>
	<title>配置 &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>网站优化（四）MySQL读写分离 原理、binlog日志、配置、TP中实现读写分离</title>
		<link>/%e7%bd%91%e7%ab%99%e4%bc%98%e5%8c%96/5342.html</link>
					<comments>/%e7%bd%91%e7%ab%99%e4%bc%98%e5%8c%96/5342.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 14:43:28 +0000</pubDate>
				<category><![CDATA[优化方案]]></category>
		<category><![CDATA[网站优化]]></category>
		<category><![CDATA[binlog日志]]></category>
		<category><![CDATA[TP中实现读写分离]]></category>
		<category><![CDATA[原理]]></category>
		<category><![CDATA[配置]]></category>
		<guid isPermaLink="false">/?p=5342</guid>

					<description><![CDATA[MySQL读写分离技术 一、读写分离（主从复制） 1、什么是主从复制、读写分离 主从复制：指定一台MySQL服 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>MySQL读写分离技术</h1>
<h1><a id="post-5342-_Toc477016872"></a>一、读写分离（主从复制）</h1>
<h2><a id="post-5342-_Toc477016873"></a><a id="post-5342-_Toc451441600"></a>1、什么是主从复制、读写分离</h2>
<ul>
<li>
    主从复制：指定一台MySQL服务器专门写入数据，其他毫秒级自动复制（同步）
  </li>
<li>
    读写分离：在主服务器增/改/删，从服务器查询
  </li>
</ul>
<p><img fetchpriority="high" decoding="async" width="982" height="463" src="/wp-content/uploads/2018/05/word-image-4836.png" class="wp-image-5343" srcset="/wp-content/uploads/2018/05/word-image-4836.png 982w, /wp-content/uploads/2018/05/word-image-4836-300x141.png 300w, /wp-content/uploads/2018/05/word-image-4836-768x362.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></p>
<h2><a id="post-5342-_Toc451441601"></a><a id="post-5342-_Toc477016874"></a>2、实现原理</h2>
<p><img decoding="async" width="640" height="303" src="/wp-content/uploads/2018/05/word-image-4837.png" class="wp-image-5344" srcset="/wp-content/uploads/2018/05/word-image-4837.png 640w, /wp-content/uploads/2018/05/word-image-4837-300x142.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<h1>二、bin-log日志</h1>
<h2>什么是bin-log日志</h2>
<p>
  binlog是以二进制存储的日志，直接打开无法查看，可以通过SQL查看，里面存储的是增、改、删SQL语句，后期可以通过binlog日志里面的SQL语句实现主从复制、或者灾难恢复。
</p>
<h2>开启binlog日志</h2>
<p>
  步骤1：vi  /etc/my.cnf
</p>
<p><img decoding="async" width="418" height="190" src="/wp-content/uploads/2018/05/word-image-4838.png" class="wp-image-5345" srcset="/wp-content/uploads/2018/05/word-image-4838.png 418w, /wp-content/uploads/2018/05/word-image-4838-300x136.png 300w" sizes="(max-width: 418px) 100vw, 418px" /></p>
<p>
  步骤2：重启即可 + 验证
</p>
<p><img loading="lazy" decoding="async" width="577" height="239" src="/wp-content/uploads/2018/05/word-image-4839.png" class="wp-image-5346" srcset="/wp-content/uploads/2018/05/word-image-4839.png 577w, /wp-content/uploads/2018/05/word-image-4839-300x124.png 300w" sizes="(max-width: 577px) 100vw, 577px" /></p>
<h2>2、查看logbin日志里面的内容</h2>
<ul>
<li>
    列表（show master logs）
  </li>
<li>
    清空（reset master）
  </li>
<li>
    刷新（flush logs）      生成一个新编号的binlog日志文件
  </li>
<li>
    查看指定日志（show binlog events in &#8216;mysql-bin.000002&#8217;）
  </li>
</ul>
<h1><a id="post-5342-_Toc451441609"></a><a id="post-5342-_Toc477016882"></a>三、具体的配置步骤</h1>
<h2><a id="post-5342-_Toc477016883"></a><a id="post-5342-_Toc451441610"></a>1、配置主服务器</h2>
<ul>
<li>
    步骤1：开启bin日志；
  </li>
<li>
    步骤2：设置一个server-id  该值必须唯一不能和从服务器相同；
  </li>
</ul>
<p><img loading="lazy" decoding="async" width="408" height="236" src="/wp-content/uploads/2018/05/word-image-4840.png" class="wp-image-5347" srcset="/wp-content/uploads/2018/05/word-image-4840.png 408w, /wp-content/uploads/2018/05/word-image-4840-300x174.png 300w" sizes="(max-width: 408px) 100vw, 408px" /></p>
<ul>
<li>
    步骤3：重启服务器
  </li>
<li>
    步骤4：授权用户可以从从服务器登陆
  </li>
</ul>
<p>
  语法：create user &#8216;username&#8217;@&#8217;host&#8217; IDENTIFIED BY &#8216;password&#8217;;
</p>
<p>
  语法：grant 权限列表 on 数据库名.表名 to &#8216;用户民&#8217;@&#8217;IP地址&#8217; identified by 密码
</p>
<p>
  create user &#8216;laolu&#8217;@&#8217;%&#8217; IDENTIFIED BY &#8216;admin888&#8217;;
</p>
<p>
  grant all on *.* to &#8216;laolu&#8217;@&#8217;%&#8217; identified by &#8216;admin888&#8217;;
</p>
<p>
  FLUSH PRIVILEGES;
</p>
<p>
  查看可登陆用户：select Host,user,password from mysql.user;
</p>
<ul>
<li>
    步骤5：添加3306防火墙例外
  </li>
</ul>
<p>
  service iptables stop
</p>
<h2><a id="post-5342-_Toc451441611"></a><a id="post-5342-_Toc477016884"></a>配置从服务器</h2>
<ul>
<li>
    步骤1：设置一个server-id  该值必须唯一不能和从服务器相同；
  </li>
<li>
    步骤2：重启服务器
  </li>
</ul>
<p><img loading="lazy" decoding="async" width="413" height="243" src="/wp-content/uploads/2018/05/word-image-4841.png" class="wp-image-5348" srcset="/wp-content/uploads/2018/05/word-image-4841.png 413w, /wp-content/uploads/2018/05/word-image-4841-300x177.png 300w" sizes="(max-width: 413px) 100vw, 413px" /></p>
<ul>
<li>
    步骤3：change master 语句指定同步位置
  </li>
</ul>
<ol>
<li>
  切换到主服务器，查询相关信息，通过SQL语句【show master status;】
</li>
</ol>
<p><img loading="lazy" decoding="async" width="608" height="220" src="/wp-content/uploads/2018/05/word-image-4842.png" class="wp-image-5349" srcset="/wp-content/uploads/2018/05/word-image-4842.png 608w, /wp-content/uploads/2018/05/word-image-4842-300x109.png 300w" sizes="(max-width: 608px) 100vw, 608px" /></p>
<p>
  2）切换到所有从服务器执行下属命令
</p>
<p>
  change master to
</p>
<p>
  master_host=&#8217;<em>192.168.21.136</em>&#8216;,master_user=&#8217;laolu&#8217;,master_password=&#8217;admin888&#8242;,master_log_file=&#8217;<strong>mysql-bin.000005</strong>&#8216;,master_log_pos=<strong>120</strong>;
</p>
<p><img loading="lazy" decoding="async" width="1007" height="677" src="/wp-content/uploads/2018/05/word-image-4843.png" class="wp-image-5350" srcset="/wp-content/uploads/2018/05/word-image-4843.png 1007w, /wp-content/uploads/2018/05/word-image-4843-300x202.png 300w, /wp-content/uploads/2018/05/word-image-4843-768x516.png 768w" sizes="(max-width: 1007px) 100vw, 1007px" /></p>
<ul>
<li>
    步骤4：启动主动同步
  </li>
</ul>
<p><img loading="lazy" decoding="async" width="924" height="659" src="/wp-content/uploads/2018/05/word-image-4844.png" class="wp-image-5351" srcset="/wp-content/uploads/2018/05/word-image-4844.png 924w, /wp-content/uploads/2018/05/word-image-4844-300x214.png 300w, /wp-content/uploads/2018/05/word-image-4844-768x548.png 768w" sizes="(max-width: 924px) 100vw, 924px" /></p>
<ul>
<li>
    步骤5：验证是否成功即可
  </li>
</ul>
<p><img loading="lazy" decoding="async" width="600" height="318" src="/wp-content/uploads/2018/05/word-image-4845.png" class="wp-image-5352" srcset="/wp-content/uploads/2018/05/word-image-4845.png 600w, /wp-content/uploads/2018/05/word-image-4845-300x159.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<h2><a id="post-5342-_Toc477016885"></a><a id="post-5342-_Toc451441612"></a>3、测试</h2>
<h1><a id="post-5342-_Toc477016887"></a><a id="post-5342-_Toc451441614"></a>三、TP框架里实现读写分离</h1>
<p><img loading="lazy" decoding="async" width="1217" height="417" src="/wp-content/uploads/2018/05/word-image-4846.png" class="wp-image-5353" srcset="/wp-content/uploads/2018/05/word-image-4846.png 1217w, /wp-content/uploads/2018/05/word-image-4846-300x103.png 300w, /wp-content/uploads/2018/05/word-image-4846-768x263.png 768w, /wp-content/uploads/2018/05/word-image-4846-1024x351.png 1024w" sizes="(max-width: 1217px) 100vw, 1217px" /><br />
<img loading="lazy" decoding="async" width="1189" height="598" src="/wp-content/uploads/2018/05/word-image-4847.png" class="wp-image-5354" srcset="/wp-content/uploads/2018/05/word-image-4847.png 1189w, /wp-content/uploads/2018/05/word-image-4847-300x151.png 300w, /wp-content/uploads/2018/05/word-image-4847-768x386.png 768w, /wp-content/uploads/2018/05/word-image-4847-1024x515.png 1024w" sizes="(max-width: 1189px) 100vw, 1189px" /></p>
<h1>MySQL管理命令</h1>
<p>
  【mysql配置文件】
</p>
<p>
  /etc/my.cnf
</p>
<p>
  【开启mysql服务】
</p>
<p>
  /php/server/mysql/bin/mysqld_safe &#8211;user=mysql &amp;
</p>
<p>
  【关闭mysql服务】
</p>
<p>
  ps -A | grep mysql        # 查看mysql进程
</p>
<p>
  kill -9 进程PID 进程PID   #  结束进程  关闭mysql服务
</p>
<p>
  【登陆MySQL数据库】
</p>
<p>
   /php/server/mysql/bin/mysql -uroot -p</p>
]]></content:encoded>
					
					<wfw:commentRss>/%e7%bd%91%e7%ab%99%e4%bc%98%e5%8c%96/5342.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP 3.2 （一）配置、路由、模型、视图、控制器、商城后台首页展示</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4022.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4022.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 13:08:24 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[商城后台首页展示]]></category>
		<category><![CDATA[控制器]]></category>
		<category><![CDATA[模型]]></category>
		<category><![CDATA[视图]]></category>
		<category><![CDATA[路由]]></category>
		<category><![CDATA[配置]]></category>
		<guid isPermaLink="false">/?p=4022</guid>

					<description><![CDATA[框架概述 1.1、回顾MVC(重点理解) MVC是一个编程思想。将业务拆分成为三个板块分别为模型、视图以及控制 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>框架概述</h1>
<h2>1.1、回顾MVC(重点理解)</h2>
<p>
  MVC是一个编程思想。将业务拆分成为三个板块分别为模型、视图以及控制器
</p>
<p>
  M代表是的模型主要是进行数据交互
</p>
<p>
  V代表的就是视图主要是与用户进行交互
</p>
<p>
  C代表是控制器作用作用是进行中间的协同工作。调度模型或者视图完成工作
</p>
<p><img loading="lazy" decoding="async" width="1159" height="486" src="/wp-content/uploads/2018/05/word-image-3566.png" class="wp-image-4023" srcset="/wp-content/uploads/2018/05/word-image-3566.png 1159w, /wp-content/uploads/2018/05/word-image-3566-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3566-768x322.png 768w, /wp-content/uploads/2018/05/word-image-3566-1024x429.png 1024w" sizes="(max-width: 1159px) 100vw, 1159px" /></p>
<h2>1.2、什么是框架</h2>
<p>
  框架就是一个半成品的代码库。包括很多的基础功能，能够方便进行项目的开发。使用框架进行项目开发可以节省开发时间。
</p>
<p>
  例如：在前端页面上进行dom操作。可以使用原生的js进行。也可以使用jQuery来进行dom操作。此处jQuery就是前端的一款框架
</p>
<h2>1.3、PHP的常用框架</h2>
<ol>
<li>
  zendframework：由zend公司开发的一款重量级的框架
</li>
<li>
  YII：基于组件的一款框架
</li>
<li>
  CI框架：一款比较轻量的框架
</li>
<li>
  laravel框架：最优雅的框架
</li>
</ol>
<p>
  5、thinkPHP框架：国产框架
</p>
<h2>1.4、TP框架的优点</h2>
<p>
  国产思想符合国人、代码注释都是中文。并且使用量比较大。社区活跃(问题能够及时解决)
</p>
<h1>TP框架的基本使用</h1>
<h2>2.1、TP源码下载</h2>
<p>
  官方网址：<a href="/goto/hl2v" rel="nofollow">http://www.thinkphp.cn/</a>
</p>
<h3>2.1.1、关于版本的选择</h3>
<p>
  3.2版本：主要是针对于web项目(有前台后台)
</p>
<p>
  5.0版本：主要针对api接口项目(全部都是写接口)
</p>
<p>
  关于实际在开发项目中版本的选择没有严格的界限。例如web项目也可以使用5.0版本。写接口也可以使用3.2版本
</p>
<h3>2.1.2、下载TP3.2版本源代码</h3>
<p><img loading="lazy" decoding="async" width="1117" height="405" src="/wp-content/uploads/2018/05/word-image-3567.png" class="wp-image-4024" srcset="/wp-content/uploads/2018/05/word-image-3567.png 1117w, /wp-content/uploads/2018/05/word-image-3567-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3567-768x278.png 768w, /wp-content/uploads/2018/05/word-image-3567-1024x371.png 1024w" sizes="(max-width: 1117px) 100vw, 1117px" /></p>
<p>
  关于核心版本与完整版的区别。对于核心版本只包括了框架的基本功能。对于完整版本除了框架基本内容之外还包括其他的功能。例如分页、文件上传等
</p>
<h2>2.2、TP框架项目部署(实现)</h2>
<h3>2.2.1、解析下载的源代码目录文件</h3>
<p>
  ①解析下载的源码
</p>
<p><img loading="lazy" decoding="async" width="769" height="274" src="/wp-content/uploads/2018/05/word-image-3568.png" class="wp-image-4025" srcset="/wp-content/uploads/2018/05/word-image-3568.png 769w, /wp-content/uploads/2018/05/word-image-3568-300x107.png 300w, /wp-content/uploads/2018/05/word-image-3568-768x274.png 768w" sizes="(max-width: 769px) 100vw, 769px" /></p>
<p>
  Application:TP默认的应用代码存储的目录(存储自己编写的代码)
</p>
<p>
  Public：TP推荐的存储资源文件的目录
</p>
<p>
  ThinkPHP:TP框架的源代码目录
</p>
<p>
  .htaccess:Apache的重写规则文件
</p>
<p>
  composer.json：composer的配置文件。composer是PHP的代码管理工具
</p>
<p>
  Index.php：项目的入口文件(非常重要)
</p>
<p>
  ②TP框架的源码目录
</p>
<p><img loading="lazy" decoding="async" width="939" height="382" src="/wp-content/uploads/2018/05/word-image-3569.png" class="wp-image-4026" srcset="/wp-content/uploads/2018/05/word-image-3569.png 939w, /wp-content/uploads/2018/05/word-image-3569-300x122.png 300w, /wp-content/uploads/2018/05/word-image-3569-768x312.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></p>
<p>
  Common：存储TP所提供的公共函数文件。对于此目录下的functions.php中的函数可以在任何位置直接使用
</p>
<p>
  Conf:TP的默认配置信息目录
</p>
<p>
  Lang:TP的语言包
</p>
<p>
  Library：TP框架的核心的类库目录
</p>
<p>
  Mode：TP所支持的模式
</p>
<p>
  Tpl：TP默认的系统模板目录
</p>
<p>
  ThinkPHP.php:tp框架的入口文件(在项目的入口文件中必须要载入此文件来载入整个TP框架)
</p>
<h3>2.2.2、创建项目</h3>
<p>
  ①创建项目目录
</p>
<p><img loading="lazy" decoding="async" width="643" height="100" src="/wp-content/uploads/2018/05/word-image-3570.png" class="wp-image-4027" srcset="/wp-content/uploads/2018/05/word-image-3570.png 643w, /wp-content/uploads/2018/05/word-image-3570-300x47.png 300w" sizes="(max-width: 643px) 100vw, 643px" /></p>
<p>
  ②拷贝TP的框架源代码
</p>
<p><img loading="lazy" decoding="async" width="1232" height="332" src="/wp-content/uploads/2018/05/word-image-3571.png" class="wp-image-4028" srcset="/wp-content/uploads/2018/05/word-image-3571.png 1232w, /wp-content/uploads/2018/05/word-image-3571-300x81.png 300w, /wp-content/uploads/2018/05/word-image-3571-768x207.png 768w, /wp-content/uploads/2018/05/word-image-3571-1024x276.png 1024w" sizes="(max-width: 1232px) 100vw, 1232px" /></p>
<h3>2.2.3、创建虚拟主机</h3>
<p>
  ①修改Apache的虚拟主机配置文件
</p>
<p><img loading="lazy" decoding="async" width="934" height="516" src="/wp-content/uploads/2018/05/word-image-3572.png" class="wp-image-4029" srcset="/wp-content/uploads/2018/05/word-image-3572.png 934w, /wp-content/uploads/2018/05/word-image-3572-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3572-768x424.png 768w" sizes="(max-width: 934px) 100vw, 934px" /></p>
<p>
  ②修改本机的hosts文件
</p>
<p><img loading="lazy" decoding="async" width="800" height="444" src="/wp-content/uploads/2018/05/word-image-3573.png" class="wp-image-4030" srcset="/wp-content/uploads/2018/05/word-image-3573.png 800w, /wp-content/uploads/2018/05/word-image-3573-300x167.png 300w, /wp-content/uploads/2018/05/word-image-3573-768x426.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p>
  ③重启Apache访问测试
</p>
<p><img loading="lazy" decoding="async" width="881" height="297" src="/wp-content/uploads/2018/05/word-image-3574.png" class="wp-image-4031" srcset="/wp-content/uploads/2018/05/word-image-3574.png 881w, /wp-content/uploads/2018/05/word-image-3574-300x101.png 300w, /wp-content/uploads/2018/05/word-image-3574-768x259.png 768w" sizes="(max-width: 881px) 100vw, 881px" /></p>
<h3>2.2.4、创建应用</h3>
<p>
  ①编写入口文件
</p>
<p><img loading="lazy" decoding="async" width="1188" height="451" src="/wp-content/uploads/2018/05/word-image-3575.png" class="wp-image-4032" srcset="/wp-content/uploads/2018/05/word-image-3575.png 1188w, /wp-content/uploads/2018/05/word-image-3575-300x114.png 300w, /wp-content/uploads/2018/05/word-image-3575-768x292.png 768w, /wp-content/uploads/2018/05/word-image-3575-1024x389.png 1024w" sizes="(max-width: 1188px) 100vw, 1188px" /></p>
<p>
  ②访问测试
</p>
<p><img loading="lazy" decoding="async" width="998" height="465" src="/wp-content/uploads/2018/05/word-image-3576.png" class="wp-image-4033" srcset="/wp-content/uploads/2018/05/word-image-3576.png 998w, /wp-content/uploads/2018/05/word-image-3576-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3576-768x358.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></p>
<p>
  ③查看效果
</p>
<p><img loading="lazy" decoding="async" width="336" height="365" src="/wp-content/uploads/2018/05/word-image-3577.png" class="wp-image-4034" srcset="/wp-content/uploads/2018/05/word-image-3577.png 336w, /wp-content/uploads/2018/05/word-image-3577-276x300.png 276w" sizes="(max-width: 336px) 100vw, 336px" /></p>
<p>
  ④解释应用中的目录
</p>
<p><img loading="lazy" decoding="async" width="1057" height="362" src="/wp-content/uploads/2018/05/word-image-3578.png" class="wp-image-4035" srcset="/wp-content/uploads/2018/05/word-image-3578.png 1057w, /wp-content/uploads/2018/05/word-image-3578-300x103.png 300w, /wp-content/uploads/2018/05/word-image-3578-768x263.png 768w, /wp-content/uploads/2018/05/word-image-3578-1024x351.png 1024w" sizes="(max-width: 1057px) 100vw, 1057px" /></p>
<p>
  ⑤进入Home解释目录<br />
  
</p>
<p><img loading="lazy" decoding="async" width="883" height="299" src="/wp-content/uploads/2018/05/word-image-3579.png" class="wp-image-4036" srcset="/wp-content/uploads/2018/05/word-image-3579.png 883w, /wp-content/uploads/2018/05/word-image-3579-300x102.png 300w, /wp-content/uploads/2018/05/word-image-3579-768x260.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></p>
<p>
  优化小技巧：
</p>
<ol>
<li>
  解决自己项目中的死链接。如果死链接比较多。会影响到项目的加载速度
</li>
</ol>
<p>
  2、更换磁盘为固态
</p>
<ol>
<li>
  磁盘冗余阵列。买raid卡挂载多块磁盘
</li>
</ol>
<h1>控制器及URL模式</h1>
<h2>3.1、创建控制器</h2>
<h3>3.1.1、控制器的存储方式</h3>
<ol>
<li>
  存储地址
</li>
</ol>
<p>
  应用(application)/模块(Home)/Controller
</p>
<ol>
<li>
  文件命名
</li>
</ol>
<p>
  控制器名称(满足驼峰式规范)+Controller+.class.php
</p>
<h3>3.1.2、控制器的创建规则</h3>
<ol>
<li>
  申明命名空间(按照目录地址规则)
</li>
<li>
  引入TP的控制器的基类
</li>
<li>
  编写自定义的控制器的类
</li>
</ol>
<h3>3.1.3、具体创建控制器</h3>
<p><img loading="lazy" decoding="async" width="1248" height="696" src="/wp-content/uploads/2018/05/word-image-3580.png" class="wp-image-4037" srcset="/wp-content/uploads/2018/05/word-image-3580.png 1248w, /wp-content/uploads/2018/05/word-image-3580-300x167.png 300w, /wp-content/uploads/2018/05/word-image-3580-768x428.png 768w, /wp-content/uploads/2018/05/word-image-3580-1024x571.png 1024w" sizes="(max-width: 1248px) 100vw, 1248px" /></p>
<h2>3.2、URL地址解析</h2>
<p>
  默认情况下TP访问的完整地址：<a href="/goto/hd8t" rel="nofollow">http://域名/入口文件?m=模块名称&amp;c=控制器名称&amp;a=方法名称(操作)</a>
</p>
<p>
  ①在控制器中增加方法
</p>
<p><img loading="lazy" decoding="async" width="1163" height="563" src="/wp-content/uploads/2018/05/word-image-3581.png" class="wp-image-4038" srcset="/wp-content/uploads/2018/05/word-image-3581.png 1163w, /wp-content/uploads/2018/05/word-image-3581-300x145.png 300w, /wp-content/uploads/2018/05/word-image-3581-768x372.png 768w, /wp-content/uploads/2018/05/word-image-3581-1024x496.png 1024w" sizes="(max-width: 1163px) 100vw, 1163px" /></p>
<p>
  ②访问测试
</p>
<p><img loading="lazy" decoding="async" width="862" height="277" src="/wp-content/uploads/2018/05/word-image-3582.png" class="wp-image-4039" srcset="/wp-content/uploads/2018/05/word-image-3582.png 862w, /wp-content/uploads/2018/05/word-image-3582-300x96.png 300w, /wp-content/uploads/2018/05/word-image-3582-768x247.png 768w" sizes="(max-width: 862px) 100vw, 862px" /></p>
<h2>3.3、默认访问(理解)</h2>
<h3>3.3.1、分析默认访问的情况</h3>
<p><img loading="lazy" decoding="async" width="1011" height="481" src="/wp-content/uploads/2018/05/word-image-3583.png" class="wp-image-4040" srcset="/wp-content/uploads/2018/05/word-image-3583.png 1011w, /wp-content/uploads/2018/05/word-image-3583-300x143.png 300w, /wp-content/uploads/2018/05/word-image-3583-768x365.png 768w" sizes="(max-width: 1011px) 100vw, 1011px" /></p>
<p>
  对于上述直接访问首先Apache的默认访问页为index.php因此就进入到项目的入口文件。由于TP默认的配置项设置默认的模块为Home默认的控制器为Index默认的方法为index因此可以看到上述效果
</p>
<h3>3.3.2、修改默认访问</h3>
<p>
  ①查看TP中的默认配置项
</p>
<p><img loading="lazy" decoding="async" width="1018" height="410" src="/wp-content/uploads/2018/05/word-image-3584.png" class="wp-image-4041" srcset="/wp-content/uploads/2018/05/word-image-3584.png 1018w, /wp-content/uploads/2018/05/word-image-3584-300x121.png 300w, /wp-content/uploads/2018/05/word-image-3584-768x309.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<p>
  ②修改配置项
</p>
<p><img loading="lazy" decoding="async" width="1024" height="385" src="/wp-content/uploads/2018/05/word-image-3585.png" class="wp-image-4042" srcset="/wp-content/uploads/2018/05/word-image-3585.png 1024w, /wp-content/uploads/2018/05/word-image-3585-300x113.png 300w, /wp-content/uploads/2018/05/word-image-3585-768x289.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>
  ③删除缓存文件
</p>
<p><img loading="lazy" decoding="async" width="843" height="267" src="/wp-content/uploads/2018/05/word-image-3586.png" class="wp-image-4043" srcset="/wp-content/uploads/2018/05/word-image-3586.png 843w, /wp-content/uploads/2018/05/word-image-3586-300x95.png 300w, /wp-content/uploads/2018/05/word-image-3586-768x243.png 768w" sizes="(max-width: 843px) 100vw, 843px" /></p>
<p>
  ④查看效果如下
</p>
<p><img loading="lazy" decoding="async" width="866" height="349" src="/wp-content/uploads/2018/05/word-image-3587.png" class="wp-image-4044" srcset="/wp-content/uploads/2018/05/word-image-3587.png 866w, /wp-content/uploads/2018/05/word-image-3587-300x121.png 300w, /wp-content/uploads/2018/05/word-image-3587-768x310.png 768w" sizes="(max-width: 866px) 100vw, 866px" /></p>
<p>
  此时产生报错的原因是因为默认的方法不存在
</p>
<h2>3.4、调试模式</h2>
<p>
  通过定义一个常量操作TP所处的模式。调试默认每次都会自动的加载最新的配置文件以及公共函数。跟调试模式对应的叫做生产模式
</p>
<p>
  在实际开发的过程中开启调试模式。当项目上线运行的过程中需要使用生产模式。在生成模式下会缓存(临时存储信息)对于的文件信息也会减少日志文件的生成
</p>
<p>
  ①开启调试模式
</p>
<p><img loading="lazy" decoding="async" width="976" height="522" src="/wp-content/uploads/2018/05/word-image-3588.png" class="wp-image-4045" srcset="/wp-content/uploads/2018/05/word-image-3588.png 976w, /wp-content/uploads/2018/05/word-image-3588-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3588-768x411.png 768w" sizes="(max-width: 976px) 100vw, 976px" /></p>
<p>
  ②查看访问效果
</p>
<p><img loading="lazy" decoding="async" width="1277" height="567" src="/wp-content/uploads/2018/05/word-image-3589.png" class="wp-image-4046" srcset="/wp-content/uploads/2018/05/word-image-3589.png 1277w, /wp-content/uploads/2018/05/word-image-3589-300x133.png 300w, /wp-content/uploads/2018/05/word-image-3589-768x341.png 768w, /wp-content/uploads/2018/05/word-image-3589-1024x455.png 1024w" sizes="(max-width: 1277px) 100vw, 1277px" /></p>
<p>
  ③查看runtime下的目录
</p>
<p><img loading="lazy" decoding="async" width="896" height="364" src="/wp-content/uploads/2018/05/word-image-3590.png" class="wp-image-4047" srcset="/wp-content/uploads/2018/05/word-image-3590.png 896w, /wp-content/uploads/2018/05/word-image-3590-300x122.png 300w, /wp-content/uploads/2018/05/word-image-3590-768x312.png 768w" sizes="(max-width: 896px) 100vw, 896px" /></p>
<h2>3.5、TP中的模块</h2>
<p>
  在TP中的应用目录下每一个文件就是一个模块只是Common跟Runtime比较特殊。不能参与项目中其他”访问功能业务”。想要增加模块可以直接在应用目录下去增加目录即可
</p>
<p>
  例如如下增加后台模块
</p>
<p>
  ①创建目录
</p>
<p><img loading="lazy" decoding="async" width="912" height="241" src="/wp-content/uploads/2018/05/word-image-3591.png" class="wp-image-4048" srcset="/wp-content/uploads/2018/05/word-image-3591.png 912w, /wp-content/uploads/2018/05/word-image-3591-300x79.png 300w, /wp-content/uploads/2018/05/word-image-3591-768x203.png 768w" sizes="(max-width: 912px) 100vw, 912px" /></p>
<p>
  ②创建控制器
</p>
<p><img loading="lazy" decoding="async" width="1022" height="659" src="/wp-content/uploads/2018/05/word-image-3592.png" class="wp-image-4049" srcset="/wp-content/uploads/2018/05/word-image-3592.png 1022w, /wp-content/uploads/2018/05/word-image-3592-300x193.png 300w, /wp-content/uploads/2018/05/word-image-3592-768x495.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></p>
<p>
  ③访问测试
</p>
<p><img loading="lazy" decoding="async" width="682" height="226" src="/wp-content/uploads/2018/05/word-image-3593.png" class="wp-image-4050" srcset="/wp-content/uploads/2018/05/word-image-3593.png 682w, /wp-content/uploads/2018/05/word-image-3593-300x99.png 300w" sizes="(max-width: 682px) 100vw, 682px" /></p>
<h2>3.6、TP中的配置文件</h2>
<h3>3.6.1、配置文件地址</h3>
<ol>
<li>
  Tp框架中惯例配置文件(ThinkPHP\Conf\convention.php)
</li>
<li>
  公共模块的配置文件(Application\Common\Conf\config.php)
</li>
<li>
  某一个模块的配置文件(Application\模块\Conf\config.php)
</li>
</ol>
<p>
  对于配置文件TP是自动载入的。因此可以在项目中直接使用配置文件
</p>
<h3>3.6.2、TP中配置文件的优先级</h3>
<p>
  配置文件优先级含义：当同一个配置项在三个文件中同时出现最终使用哪一个配置文件中的内容
</p>
<p>
  模块配置文件&gt;公共模块配置文件&gt;TP惯例配置文件
</p>
<h3>3.6.3、演示配置文件优先级</h3>
<p>
  ①修改公共模块的配置文件
</p>
<p><img loading="lazy" decoding="async" width="1279" height="336" src="/wp-content/uploads/2018/05/word-image-3594.png" class="wp-image-4051" srcset="/wp-content/uploads/2018/05/word-image-3594.png 1279w, /wp-content/uploads/2018/05/word-image-3594-300x79.png 300w, /wp-content/uploads/2018/05/word-image-3594-768x202.png 768w, /wp-content/uploads/2018/05/word-image-3594-1024x269.png 1024w" sizes="(max-width: 1279px) 100vw, 1279px" /></p>
<p>
  ②修改Home模块下的配置
</p>
<p><img loading="lazy" decoding="async" width="970" height="343" src="/wp-content/uploads/2018/05/word-image-3595.png" class="wp-image-4052" srcset="/wp-content/uploads/2018/05/word-image-3595.png 970w, /wp-content/uploads/2018/05/word-image-3595-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3595-768x272.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></p>
<p>
  ③增加测试方法
</p>
<p><img loading="lazy" decoding="async" width="913" height="452" src="/wp-content/uploads/2018/05/word-image-3596.png" class="wp-image-4053" srcset="/wp-content/uploads/2018/05/word-image-3596.png 913w, /wp-content/uploads/2018/05/word-image-3596-300x149.png 300w, /wp-content/uploads/2018/05/word-image-3596-768x380.png 768w" sizes="(max-width: 913px) 100vw, 913px" /></p>
<p>
  ④查看效果
</p>
<p><img loading="lazy" decoding="async" width="565" height="251" src="/wp-content/uploads/2018/05/word-image-3597.png" class="wp-image-4054" srcset="/wp-content/uploads/2018/05/word-image-3597.png 565w, /wp-content/uploads/2018/05/word-image-3597-300x133.png 300w" sizes="(max-width: 565px) 100vw, 565px" /></p>
<h2>3.7、TP中的四种URL模式（重点）</h2>
<h3>3.7.1、四种URL模式介绍</h3>
<p>
  ①普通模式
</p>
<p>
  直接通过给入口文件传递m、c、a三个参数
</p>
<p>
  m对应模块名称
</p>
<p>
  c对应控制器名称
</p>
<p>
  a对应方法名称
</p>
<p>
  格式：<a href="/goto/zx7y" rel="nofollow">http://tp.com/index.php?m=Home&amp;c=Index&amp;a=test2</a>
</p>
<p>
  任何情况下都可以访问
</p>
<p>
  ②pathinfo模式
</p>
<p>
  Pathinfo模式从URL地址栏上看上去像一个目录的格式。
</p>
<p>
  格式为：<a href="/goto/itit" rel="nofollow">http://tp.com/index.php/Home/Index/test2</a>
</p>
<p>
  对于上述的地址格式入口文件后的每一个“/”分隔的就是一个参数
</p>
<p>
  Home(第一个参数)对应的模块名称
</p>
<p>
  Index(第二个参数)对应的控制器名称
</p>
<p>
  Test2(第三个参数)对应的方法名称
</p>
<p>
  注意：pathinfo模式需要有web服务器的支持 Apache支持此模式。Nginx就不支持
</p>
<p>
  ③重写模式
</p>
<p>
  将原本的URL访问改写成其他的URL形式。重写模式根据不同的web服务器决定。最常见的重写就是隐藏项目的入口文件
</p>
<p>
  例如
</p>
<p>
  访问:http://tp.com/Home/Index/test2=&gt;解析的地址为http://tp.com、index.php/Home/Index/test2
</p>
<p>
  ④兼容模式
</p>
<p>
  考虑部分web服务器不支持pathinfo。又想要去使用类似pathinfo的格式。就可以使用兼容模式
</p>
<p>
  格式：<a href="/goto/dc8y" rel="nofollow">http://tp.com/index.php?s=/Home/Index/test2</a>
</p>
<p>
  兼容模式没有任何其他的外界要求
</p>
<h3>3.7.2、实现隐藏入口文件</h3>
<p>
  ①开启Apache的重写模块
</p>
<p><img loading="lazy" decoding="async" width="1012" height="473" src="/wp-content/uploads/2018/05/word-image-3598.png" class="wp-image-4055" srcset="/wp-content/uploads/2018/05/word-image-3598.png 1012w, /wp-content/uploads/2018/05/word-image-3598-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3598-768x359.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /></p>
<p>
  ②设置虚拟主机可以重写
</p>
<p><img loading="lazy" decoding="async" width="1126" height="545" src="/wp-content/uploads/2018/05/word-image-3599.png" class="wp-image-4056" srcset="/wp-content/uploads/2018/05/word-image-3599.png 1126w, /wp-content/uploads/2018/05/word-image-3599-300x145.png 300w, /wp-content/uploads/2018/05/word-image-3599-768x372.png 768w, /wp-content/uploads/2018/05/word-image-3599-1024x496.png 1024w" sizes="(max-width: 1126px) 100vw, 1126px" /></p>
<p>
  ③拷贝重写规则文件
</p>
<p><img loading="lazy" decoding="async" width="1172" height="491" src="/wp-content/uploads/2018/05/word-image-3600.png" class="wp-image-4057" srcset="/wp-content/uploads/2018/05/word-image-3600.png 1172w, /wp-content/uploads/2018/05/word-image-3600-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3600-768x322.png 768w, /wp-content/uploads/2018/05/word-image-3600-1024x429.png 1024w" sizes="(max-width: 1172px) 100vw, 1172px" /></p>
<p>
  ④重启Apache查看效果
</p>
<p><img loading="lazy" decoding="async" width="544" height="125" src="/wp-content/uploads/2018/05/word-image-3601.png" class="wp-image-4058" srcset="/wp-content/uploads/2018/05/word-image-3601.png 544w, /wp-content/uploads/2018/05/word-image-3601-300x69.png 300w" sizes="(max-width: 544px) 100vw, 544px" /></p>
<p>
  注意：只要条件满足TP中的四种URL模式都可以使用访问到方法
</p>
<h3>3.7.3、URL地址生成(重点会用)</h3>
<p>
  使用TP提供的U函数根据当前的模型、控制器、方法、参数等生产一个链接地址
</p>
<p>
  ①查看U函数的使用方式
</p>
<p><img loading="lazy" decoding="async" width="1157" height="639" src="/wp-content/uploads/2018/05/word-image-3602.png" class="wp-image-4059" srcset="/wp-content/uploads/2018/05/word-image-3602.png 1157w, /wp-content/uploads/2018/05/word-image-3602-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3602-768x424.png 768w, /wp-content/uploads/2018/05/word-image-3602-1024x566.png 1024w" sizes="(max-width: 1157px) 100vw, 1157px" /></p>
<p>
  ②编写测试代码
</p>
<p><img loading="lazy" decoding="async" width="1097" height="695" src="/wp-content/uploads/2018/05/word-image-3603.png" class="wp-image-4060" srcset="/wp-content/uploads/2018/05/word-image-3603.png 1097w, /wp-content/uploads/2018/05/word-image-3603-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3603-768x487.png 768w, /wp-content/uploads/2018/05/word-image-3603-1024x649.png 1024w" sizes="(max-width: 1097px) 100vw, 1097px" /></p>
<p>
  ④查看效果
</p>
<p><img loading="lazy" decoding="async" width="964" height="449" src="/wp-content/uploads/2018/05/word-image-3604.png" class="wp-image-4061" srcset="/wp-content/uploads/2018/05/word-image-3604.png 964w, /wp-content/uploads/2018/05/word-image-3604-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3604-768x358.png 768w" sizes="(max-width: 964px) 100vw, 964px" /></p>
<p>
  从上述结果中可以得知TP默认的是使用pathinfo模式
</p>
<p>
  在TP的配置文件中有一个URL_MODEL控制使用的URL模式
</p>
<p>
  ⑤查看惯例配置中的配置项
</p>
<p><img loading="lazy" decoding="async" width="1149" height="440" src="/wp-content/uploads/2018/05/word-image-3605.png" class="wp-image-4062" srcset="/wp-content/uploads/2018/05/word-image-3605.png 1149w, /wp-content/uploads/2018/05/word-image-3605-300x115.png 300w, /wp-content/uploads/2018/05/word-image-3605-768x294.png 768w, /wp-content/uploads/2018/05/word-image-3605-1024x392.png 1024w" sizes="(max-width: 1149px) 100vw, 1149px" /></p>
<p>
  ⑥查看普通模式的地址
</p>
<p>
  修改URL模式
</p>
<p><img loading="lazy" decoding="async" width="862" height="389" src="/wp-content/uploads/2018/05/word-image-3606.png" class="wp-image-4063" srcset="/wp-content/uploads/2018/05/word-image-3606.png 862w, /wp-content/uploads/2018/05/word-image-3606-300x135.png 300w, /wp-content/uploads/2018/05/word-image-3606-768x347.png 768w" sizes="(max-width: 862px) 100vw, 862px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="864" height="347" src="/wp-content/uploads/2018/05/word-image-3607.png" class="wp-image-4064" srcset="/wp-content/uploads/2018/05/word-image-3607.png 864w, /wp-content/uploads/2018/05/word-image-3607-300x120.png 300w, /wp-content/uploads/2018/05/word-image-3607-768x308.png 768w" sizes="(max-width: 864px) 100vw, 864px" /></p>
<p>
  ⑦查看重写模式地址
</p>
<p><img loading="lazy" decoding="async" width="1102" height="447" src="/wp-content/uploads/2018/05/word-image-3608.png" class="wp-image-4065" srcset="/wp-content/uploads/2018/05/word-image-3608.png 1102w, /wp-content/uploads/2018/05/word-image-3608-300x122.png 300w, /wp-content/uploads/2018/05/word-image-3608-768x312.png 768w, /wp-content/uploads/2018/05/word-image-3608-1024x415.png 1024w" sizes="(max-width: 1102px) 100vw, 1102px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="786" height="339" src="/wp-content/uploads/2018/05/word-image-3609.png" class="wp-image-4066" srcset="/wp-content/uploads/2018/05/word-image-3609.png 786w, /wp-content/uploads/2018/05/word-image-3609-300x129.png 300w, /wp-content/uploads/2018/05/word-image-3609-768x331.png 768w" sizes="(max-width: 786px) 100vw, 786px" /></p>
<p>
  ⑧查看兼容模式
</p>
<p><img loading="lazy" decoding="async" width="1063" height="379" src="/wp-content/uploads/2018/05/word-image-3610.png" class="wp-image-4067" srcset="/wp-content/uploads/2018/05/word-image-3610.png 1063w, /wp-content/uploads/2018/05/word-image-3610-300x107.png 300w, /wp-content/uploads/2018/05/word-image-3610-768x274.png 768w, /wp-content/uploads/2018/05/word-image-3610-1024x365.png 1024w" sizes="(max-width: 1063px) 100vw, 1063px" /><br />
<img loading="lazy" decoding="async" width="804" height="375" src="/wp-content/uploads/2018/05/word-image-3611.png" class="wp-image-4068" srcset="/wp-content/uploads/2018/05/word-image-3611.png 804w, /wp-content/uploads/2018/05/word-image-3611-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3611-768x358.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></p>
<p>
  注意：TP中的四种URL模式并不是限制项目需要使用哪一种模式进行访问。URL_MODEL配置项的作用是为了控制U函数所生成的URL地址的格式
</p>
<h2>3.8、页面跳转与重定向</h2>
<p>
  关于页面跳转跟重定向功能是经常使用。常见位置在数据操作完成之后的提示信息
</p>
<h3>3.8.1、页面跳转</h3>
<p>
  在TP的控制器基类中提供了两个方法可以实现跳转功能分别为success跟error
</p>
<p>
  ①查看源码位置
</p>
<p><img loading="lazy" decoding="async" width="1087" height="695" src="/wp-content/uploads/2018/05/word-image-3612.png" class="wp-image-4069" srcset="/wp-content/uploads/2018/05/word-image-3612.png 1087w, /wp-content/uploads/2018/05/word-image-3612-300x192.png 300w, /wp-content/uploads/2018/05/word-image-3612-768x491.png 768w, /wp-content/uploads/2018/05/word-image-3612-1024x655.png 1024w" sizes="(max-width: 1087px) 100vw, 1087px" /></p>
<p>
  ②测试成功的方法使用
</p>
<p><img loading="lazy" decoding="async" width="1029" height="505" src="/wp-content/uploads/2018/05/word-image-3613.png" class="wp-image-4070" srcset="/wp-content/uploads/2018/05/word-image-3613.png 1029w, /wp-content/uploads/2018/05/word-image-3613-300x147.png 300w, /wp-content/uploads/2018/05/word-image-3613-768x377.png 768w, /wp-content/uploads/2018/05/word-image-3613-1024x503.png 1024w" sizes="(max-width: 1029px) 100vw, 1029px" /></p>
<p>
  ③测试失败的方法的使用
</p>
<p><img loading="lazy" decoding="async" width="1017" height="482" src="/wp-content/uploads/2018/05/word-image-3614.png" class="wp-image-4071" srcset="/wp-content/uploads/2018/05/word-image-3614.png 1017w, /wp-content/uploads/2018/05/word-image-3614-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3614-768x364.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" /></p>
<p>
  ④关于成功失败跳转的模板文件地址
</p>
<p><img loading="lazy" decoding="async" width="1289" height="643" src="/wp-content/uploads/2018/05/word-image-3615.png" class="wp-image-4072" srcset="/wp-content/uploads/2018/05/word-image-3615.png 1289w, /wp-content/uploads/2018/05/word-image-3615-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3615-768x383.png 768w, /wp-content/uploads/2018/05/word-image-3615-1024x511.png 1024w" sizes="(max-width: 1289px) 100vw, 1289px" /></p>
<h3>3.8.2、页面重定向</h3>
<p>
  ①查看使用方式
</p>
<p><img loading="lazy" decoding="async" width="1098" height="682" src="/wp-content/uploads/2018/05/word-image-3616.png" class="wp-image-4073" srcset="/wp-content/uploads/2018/05/word-image-3616.png 1098w, /wp-content/uploads/2018/05/word-image-3616-300x186.png 300w, /wp-content/uploads/2018/05/word-image-3616-768x477.png 768w, /wp-content/uploads/2018/05/word-image-3616-1024x636.png 1024w" sizes="(max-width: 1098px) 100vw, 1098px" /></p>
<p>
  ②创建方法测试
</p>
<p><img loading="lazy" decoding="async" width="1095" height="545" src="/wp-content/uploads/2018/05/word-image-3617.png" class="wp-image-4074" srcset="/wp-content/uploads/2018/05/word-image-3617.png 1095w, /wp-content/uploads/2018/05/word-image-3617-300x149.png 300w, /wp-content/uploads/2018/05/word-image-3617-768x382.png 768w, /wp-content/uploads/2018/05/word-image-3617-1024x510.png 1024w" sizes="(max-width: 1095px) 100vw, 1095px" /></p>
<p>
  ③查看效果
</p>
<p><img loading="lazy" decoding="async" width="679" height="241" src="/wp-content/uploads/2018/05/word-image-3618.png" class="wp-image-4075" srcset="/wp-content/uploads/2018/05/word-image-3618.png 679w, /wp-content/uploads/2018/05/word-image-3618-300x106.png 300w" sizes="(max-width: 679px) 100vw, 679px" /></p>
<h2>3.9、空控制器与空操作</h2>
<h3>3.9.1、空操作</h3>
<p>
  当用户访问某一个不存在的方法时接下来由单独的一个空操作(对应在控制中的_empty的方法)实现处理请求。
</p>
<p>
  ①增加方法
</p>
<p><img loading="lazy" decoding="async" width="839" height="468" src="/wp-content/uploads/2018/05/word-image-3619.png" class="wp-image-4076" srcset="/wp-content/uploads/2018/05/word-image-3619.png 839w, /wp-content/uploads/2018/05/word-image-3619-300x167.png 300w, /wp-content/uploads/2018/05/word-image-3619-768x428.png 768w" sizes="(max-width: 839px) 100vw, 839px" /></p>
<p>
  ②访问测试
</p>
<p><img loading="lazy" decoding="async" width="1032" height="363" src="/wp-content/uploads/2018/05/word-image-3620.png" class="wp-image-4077" srcset="/wp-content/uploads/2018/05/word-image-3620.png 1032w, /wp-content/uploads/2018/05/word-image-3620-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3620-768x270.png 768w, /wp-content/uploads/2018/05/word-image-3620-1024x360.png 1024w" sizes="(max-width: 1032px) 100vw, 1032px" /></p>
<h3>3.9.2、空控制器</h3>
<p>
  当用户访问一个不存在的控制器时会自动的去执行空控制下对应的方法。
</p>
<p>
  ①先创建空控制器
</p>
<p><img loading="lazy" decoding="async" width="858" height="481" src="/wp-content/uploads/2018/05/word-image-3621.png" class="wp-image-4078" srcset="/wp-content/uploads/2018/05/word-image-3621.png 858w, /wp-content/uploads/2018/05/word-image-3621-300x168.png 300w, /wp-content/uploads/2018/05/word-image-3621-768x431.png 768w" sizes="(max-width: 858px) 100vw, 858px" /></p>
<p>
  ②执行查看效果
</p>
<p><img loading="lazy" decoding="async" width="1094" height="461" src="/wp-content/uploads/2018/05/word-image-3622.png" class="wp-image-4079" srcset="/wp-content/uploads/2018/05/word-image-3622.png 1094w, /wp-content/uploads/2018/05/word-image-3622-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3622-768x324.png 768w, /wp-content/uploads/2018/05/word-image-3622-1024x432.png 1024w" sizes="(max-width: 1094px) 100vw, 1094px" /></p>
<p>
  ③在空控制器中创建空方法
</p>
<p><img loading="lazy" decoding="async" width="936" height="648" src="/wp-content/uploads/2018/05/word-image-3623.png" class="wp-image-4080" srcset="/wp-content/uploads/2018/05/word-image-3623.png 936w, /wp-content/uploads/2018/05/word-image-3623-300x208.png 300w, /wp-content/uploads/2018/05/word-image-3623-768x532.png 768w" sizes="(max-width: 936px) 100vw, 936px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="694" height="184" src="/wp-content/uploads/2018/05/word-image-3624.png" class="wp-image-4081" srcset="/wp-content/uploads/2018/05/word-image-3624.png 694w, /wp-content/uploads/2018/05/word-image-3624-300x80.png 300w" sizes="(max-width: 694px) 100vw, 694px" /></p>
<p>
  备注：最好事先错误的提示页面通过使用web服务器的错误提示设置
</p>
<h1>视图(一)</h1>
<h2>4.1、视图创建规则</h2>
<h3>4.1.1、视图创建规则</h3>
<ol>
<li>
  默认情况下需要将视图的模板文件存储在模块下的view目录中
</li>
<li>
  默认情况下视图存储需要在View下跟控制器同名的目录中
</li>
<li>
  默认情况下视图模板文件名称需要保持跟方法同名后缀为.html的模板
</li>
</ol>
<h3>4.1.2、创建视图</h3>
<p>
  ①创建根控制器同名的目录
</p>
<p><img loading="lazy" decoding="async" width="997" height="187" src="/wp-content/uploads/2018/05/word-image-3625.png" class="wp-image-4082" srcset="/wp-content/uploads/2018/05/word-image-3625.png 997w, /wp-content/uploads/2018/05/word-image-3625-300x56.png 300w, /wp-content/uploads/2018/05/word-image-3625-768x144.png 768w" sizes="(max-width: 997px) 100vw, 997px" /></p>
<p>
  ②创建模板
</p>
<p><img loading="lazy" decoding="async" width="918" height="476" src="/wp-content/uploads/2018/05/word-image-3626.png" class="wp-image-4083" srcset="/wp-content/uploads/2018/05/word-image-3626.png 918w, /wp-content/uploads/2018/05/word-image-3626-300x156.png 300w, /wp-content/uploads/2018/05/word-image-3626-768x398.png 768w" sizes="(max-width: 918px) 100vw, 918px" /></p>
<h2>4.2、控制器调用视图</h2>
<p>
  对于在TP的方法中需要使用视图的模板可以使用两个方法分别为display跟fetch方法。
</p>
<p>
  对于display跟fetch用法一模一样，区别在于display会直接输出模板的结果。Fetch不会直接输出
</p>
<h3>4.2.1、演示display跟fetch的区别</h3>
<p>
  ①创建方法
</p>
<p><img loading="lazy" decoding="async" width="1061" height="596" src="/wp-content/uploads/2018/05/word-image-3627.png" class="wp-image-4084" srcset="/wp-content/uploads/2018/05/word-image-3627.png 1061w, /wp-content/uploads/2018/05/word-image-3627-300x169.png 300w, /wp-content/uploads/2018/05/word-image-3627-768x431.png 768w, /wp-content/uploads/2018/05/word-image-3627-1024x575.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  ②查看效果
</p>
<p><img loading="lazy" decoding="async" width="764" height="167" src="/wp-content/uploads/2018/05/word-image-3628.png" class="wp-image-4085" srcset="/wp-content/uploads/2018/05/word-image-3628.png 764w, /wp-content/uploads/2018/05/word-image-3628-300x66.png 300w" sizes="(max-width: 764px) 100vw, 764px" /><br />
<img loading="lazy" decoding="async" width="708" height="259" src="/wp-content/uploads/2018/05/word-image-3629.png" class="wp-image-4086" srcset="/wp-content/uploads/2018/05/word-image-3629.png 708w, /wp-content/uploads/2018/05/word-image-3629-300x110.png 300w" sizes="(max-width: 708px) 100vw, 708px" /></p>
<p>
  修改showtwo方法
</p>
<p><img loading="lazy" decoding="async" width="946" height="587" src="/wp-content/uploads/2018/05/word-image-3630.png" class="wp-image-4087" srcset="/wp-content/uploads/2018/05/word-image-3630.png 946w, /wp-content/uploads/2018/05/word-image-3630-300x186.png 300w, /wp-content/uploads/2018/05/word-image-3630-768x477.png 768w" sizes="(max-width: 946px) 100vw, 946px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="740" height="323" src="/wp-content/uploads/2018/05/word-image-3631.png" class="wp-image-4088" srcset="/wp-content/uploads/2018/05/word-image-3631.png 740w, /wp-content/uploads/2018/05/word-image-3631-300x131.png 300w" sizes="(max-width: 740px) 100vw, 740px" /></p>
<h3>4.2.2、演示display用法</h3>
<p>
  ①查看使用方式
</p>
<p><img loading="lazy" decoding="async" width="848" height="390" src="/wp-content/uploads/2018/05/word-image-3632.png" class="wp-image-4089" srcset="/wp-content/uploads/2018/05/word-image-3632.png 848w, /wp-content/uploads/2018/05/word-image-3632-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3632-768x353.png 768w" sizes="(max-width: 848px) 100vw, 848px" /></p>
<p>
  ②指定模块方式使用display
</p>
<p>
  创建测试方法
</p>
<p><img loading="lazy" decoding="async" width="898" height="626" src="/wp-content/uploads/2018/05/word-image-3633.png" class="wp-image-4090" srcset="/wp-content/uploads/2018/05/word-image-3633.png 898w, /wp-content/uploads/2018/05/word-image-3633-300x209.png 300w, /wp-content/uploads/2018/05/word-image-3633-768x535.png 768w" sizes="(max-width: 898px) 100vw, 898px" /></p>
<p>
  查看效果
</p>
<p><img loading="lazy" decoding="async" width="654" height="179" src="/wp-content/uploads/2018/05/word-image-3634.png" class="wp-image-4091" srcset="/wp-content/uploads/2018/05/word-image-3634.png 654w, /wp-content/uploads/2018/05/word-image-3634-300x82.png 300w" sizes="(max-width: 654px) 100vw, 654px" /><br />
<img loading="lazy" decoding="async" width="633" height="135" src="/wp-content/uploads/2018/05/word-image-3635.png" class="wp-image-4092" srcset="/wp-content/uploads/2018/05/word-image-3635.png 633w, /wp-content/uploads/2018/05/word-image-3635-300x64.png 300w" sizes="(max-width: 633px) 100vw, 633px" /></p>
<p>
  ③直接指定模板文件地址
</p>
<p>
  创建测试方法
</p>
<p><img loading="lazy" decoding="async" width="1058" height="373" src="/wp-content/uploads/2018/05/word-image-3636.png" class="wp-image-4093" srcset="/wp-content/uploads/2018/05/word-image-3636.png 1058w, /wp-content/uploads/2018/05/word-image-3636-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3636-768x271.png 768w, /wp-content/uploads/2018/05/word-image-3636-1024x361.png 1024w" sizes="(max-width: 1058px) 100vw, 1058px" /></p>
<p>
  查看结果
</p>
<p><img loading="lazy" decoding="async" width="764" height="202" src="/wp-content/uploads/2018/05/word-image-3637.png" class="wp-image-4094" srcset="/wp-content/uploads/2018/05/word-image-3637.png 764w, /wp-content/uploads/2018/05/word-image-3637-300x79.png 300w" sizes="(max-width: 764px) 100vw, 764px" /></p>
<h2>4.3、模板替换</h2>
<p>
  模板替换就是通过在模板中使用TP内置的”模板变量”.TP在每次渲染模板之前都会讲对应的模板变量进行替换
</p>
<h3>4.3.1、内置的模板替换</h3>
<p>
  ①查看文档
</p>
<p>
  在TP有内置的模板变量替换如下
</p>
<p><img loading="lazy" decoding="async" width="885" height="277" src="/wp-content/uploads/2018/05/word-image-3638.png" class="wp-image-4095" srcset="/wp-content/uploads/2018/05/word-image-3638.png 885w, /wp-content/uploads/2018/05/word-image-3638-300x94.png 300w, /wp-content/uploads/2018/05/word-image-3638-768x240.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></p>
<p>
  ②修改show模板查看效果
</p>
<p><img loading="lazy" decoding="async" width="1080" height="675" src="/wp-content/uploads/2018/05/word-image-3639.png" class="wp-image-4096" srcset="/wp-content/uploads/2018/05/word-image-3639.png 1080w, /wp-content/uploads/2018/05/word-image-3639-300x188.png 300w, /wp-content/uploads/2018/05/word-image-3639-768x480.png 768w, /wp-content/uploads/2018/05/word-image-3639-1024x640.png 1024w" sizes="(max-width: 1080px) 100vw, 1080px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="989" height="425" src="/wp-content/uploads/2018/05/word-image-3640.png" class="wp-image-4097" srcset="/wp-content/uploads/2018/05/word-image-3640.png 989w, /wp-content/uploads/2018/05/word-image-3640-300x129.png 300w, /wp-content/uploads/2018/05/word-image-3640-768x330.png 768w" sizes="(max-width: 989px) 100vw, 989px" /></p>
<p>
  最常使用的是__PUBLIC__替换资源地址
</p>
<h3>4.3.2、自定义模板替换</h3>
<p>
  ①增加自定义配置项
</p>
<p><img loading="lazy" decoding="async" width="987" height="525" src="/wp-content/uploads/2018/05/word-image-3641.png" class="wp-image-4098" srcset="/wp-content/uploads/2018/05/word-image-3641.png 987w, /wp-content/uploads/2018/05/word-image-3641-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3641-768x409.png 768w" sizes="(max-width: 987px) 100vw, 987px" /></p>
<p>
  ②模板中使用
</p>
<p><img loading="lazy" decoding="async" width="1068" height="412" src="/wp-content/uploads/2018/05/word-image-3642.png" class="wp-image-4099" srcset="/wp-content/uploads/2018/05/word-image-3642.png 1068w, /wp-content/uploads/2018/05/word-image-3642-300x116.png 300w, /wp-content/uploads/2018/05/word-image-3642-768x296.png 768w, /wp-content/uploads/2018/05/word-image-3642-1024x395.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /></p>
<p>
  ③效果如下
</p>
<p><img loading="lazy" decoding="async" width="869" height="257" src="/wp-content/uploads/2018/05/word-image-3643.png" class="wp-image-4100" srcset="/wp-content/uploads/2018/05/word-image-3643.png 869w, /wp-content/uploads/2018/05/word-image-3643-300x89.png 300w, /wp-content/uploads/2018/05/word-image-3643-768x227.png 768w" sizes="(max-width: 869px) 100vw, 869px" /></p>
<h1>案例-搭建电商项目后台</h1>
<h2>5.1、项目部署</h2>
<h3>5.1.1、创建项目</h3>
<p>
  ①创建项目的根目录
</p>
<p><img loading="lazy" decoding="async" width="987" height="294" src="/wp-content/uploads/2018/05/word-image-3644.png" class="wp-image-4101" srcset="/wp-content/uploads/2018/05/word-image-3644.png 987w, /wp-content/uploads/2018/05/word-image-3644-300x89.png 300w, /wp-content/uploads/2018/05/word-image-3644-768x229.png 768w" sizes="(max-width: 987px) 100vw, 987px" /></p>
<p>
  ②创建wwwroot目录
</p>
<p><img loading="lazy" decoding="async" width="890" height="153" src="/wp-content/uploads/2018/05/word-image-3645.png" class="wp-image-4102" srcset="/wp-content/uploads/2018/05/word-image-3645.png 890w, /wp-content/uploads/2018/05/word-image-3645-300x52.png 300w, /wp-content/uploads/2018/05/word-image-3645-768x132.png 768w" sizes="(max-width: 890px) 100vw, 890px" /></p>
<p>
  ③拷贝TP的框架源代码
</p>
<p><img loading="lazy" decoding="async" width="1159" height="358" src="/wp-content/uploads/2018/05/word-image-3646.png" class="wp-image-4103" srcset="/wp-content/uploads/2018/05/word-image-3646.png 1159w, /wp-content/uploads/2018/05/word-image-3646-300x93.png 300w, /wp-content/uploads/2018/05/word-image-3646-768x237.png 768w, /wp-content/uploads/2018/05/word-image-3646-1024x316.png 1024w" sizes="(max-width: 1159px) 100vw, 1159px" /></p>
<p>
  ④拷贝入口文件及重写规则文件
</p>
<p><img loading="lazy" decoding="async" width="1212" height="376" src="/wp-content/uploads/2018/05/word-image-3647.png" class="wp-image-4104" srcset="/wp-content/uploads/2018/05/word-image-3647.png 1212w, /wp-content/uploads/2018/05/word-image-3647-300x93.png 300w, /wp-content/uploads/2018/05/word-image-3647-768x238.png 768w, /wp-content/uploads/2018/05/word-image-3647-1024x318.png 1024w" sizes="(max-width: 1212px) 100vw, 1212px" /></p>
<h3>5.1.2、配置虚拟主机</h3>
<p>
  ①增加虚拟主机
</p>
<p><img loading="lazy" decoding="async" width="1053" height="449" src="/wp-content/uploads/2018/05/word-image-3648.png" class="wp-image-4105" srcset="/wp-content/uploads/2018/05/word-image-3648.png 1053w, /wp-content/uploads/2018/05/word-image-3648-300x128.png 300w, /wp-content/uploads/2018/05/word-image-3648-768x327.png 768w, /wp-content/uploads/2018/05/word-image-3648-1024x437.png 1024w" sizes="(max-width: 1053px) 100vw, 1053px" /></p>
<p>
  ②修改hosts文件
</p>
<p><img loading="lazy" decoding="async" width="864" height="408" src="/wp-content/uploads/2018/05/word-image-3649.png" class="wp-image-4106" srcset="/wp-content/uploads/2018/05/word-image-3649.png 864w, /wp-content/uploads/2018/05/word-image-3649-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3649-768x363.png 768w" sizes="(max-width: 864px) 100vw, 864px" /></p>
<p>
  ③修改入口文件
</p>
<p><img loading="lazy" decoding="async" width="996" height="553" src="/wp-content/uploads/2018/05/word-image-3650.png" class="wp-image-4107" srcset="/wp-content/uploads/2018/05/word-image-3650.png 996w, /wp-content/uploads/2018/05/word-image-3650-300x167.png 300w, /wp-content/uploads/2018/05/word-image-3650-768x426.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></p>
<p>
  ④重启Apache访问查看
</p>
<p><img loading="lazy" decoding="async" width="978" height="447" src="/wp-content/uploads/2018/05/word-image-3651.png" class="wp-image-4108" srcset="/wp-content/uploads/2018/05/word-image-3651.png 978w, /wp-content/uploads/2018/05/word-image-3651-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3651-768x351.png 768w" sizes="(max-width: 978px) 100vw, 978px" /></p>
<p>
  查看目录结构
</p>
<p><img loading="lazy" decoding="async" width="642" height="366" src="/wp-content/uploads/2018/05/word-image-3652.png" class="wp-image-4109" srcset="/wp-content/uploads/2018/05/word-image-3652.png 642w, /wp-content/uploads/2018/05/word-image-3652-300x171.png 300w" sizes="(max-width: 642px) 100vw, 642px" /></p>
<p>
  对于此方式部署项目由于域名解析的目录下只有入口文件。因此项目的安全性更好
</p>
<h2>5.2、创建后台模块</h2>
<p>
  ①复制Home模块为Admin
</p>
<p><img loading="lazy" decoding="async" width="950" height="253" src="/wp-content/uploads/2018/05/word-image-3653.png" class="wp-image-4110" srcset="/wp-content/uploads/2018/05/word-image-3653.png 950w, /wp-content/uploads/2018/05/word-image-3653-300x80.png 300w, /wp-content/uploads/2018/05/word-image-3653-768x205.png 768w" sizes="(max-width: 950px) 100vw, 950px" /></p>
<p>
  ②修改后台模块下的index控制器
</p>
<p><img loading="lazy" decoding="async" width="1021" height="483" src="/wp-content/uploads/2018/05/word-image-3654.png" class="wp-image-4111" srcset="/wp-content/uploads/2018/05/word-image-3654.png 1021w, /wp-content/uploads/2018/05/word-image-3654-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3654-768x363.png 768w" sizes="(max-width: 1021px) 100vw, 1021px" /></p>
<p>
  ③访问查看
</p>
<p><img loading="lazy" decoding="async" width="1086" height="261" src="/wp-content/uploads/2018/05/word-image-3655.png" class="wp-image-4112" srcset="/wp-content/uploads/2018/05/word-image-3655.png 1086w, /wp-content/uploads/2018/05/word-image-3655-300x72.png 300w, /wp-content/uploads/2018/05/word-image-3655-768x185.png 768w, /wp-content/uploads/2018/05/word-image-3655-1024x246.png 1024w" sizes="(max-width: 1086px) 100vw, 1086px" /></p>
<h2>5.3、处理URL地址</h2>
<h3>5.3.1、隐藏入口文件</h3>
<p>
  ①修改Apache的配置启用重写模式
</p>
<p><img loading="lazy" decoding="async" width="806" height="359" src="/wp-content/uploads/2018/05/word-image-3656.png" class="wp-image-4113" srcset="/wp-content/uploads/2018/05/word-image-3656.png 806w, /wp-content/uploads/2018/05/word-image-3656-300x134.png 300w, /wp-content/uploads/2018/05/word-image-3656-768x342.png 768w" sizes="(max-width: 806px) 100vw, 806px" /></p>
<p>
  ②设置虚拟主机可以重启
</p>
<p><img loading="lazy" decoding="async" width="948" height="486" src="/wp-content/uploads/2018/05/word-image-3657.png" class="wp-image-4114" srcset="/wp-content/uploads/2018/05/word-image-3657.png 948w, /wp-content/uploads/2018/05/word-image-3657-300x154.png 300w, /wp-content/uploads/2018/05/word-image-3657-768x394.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  重写规则文件已经拷贝
</p>
<p>
  ③重启Apache访问测试
</p>
<p><img loading="lazy" decoding="async" width="969" height="470" src="/wp-content/uploads/2018/05/word-image-3658.png" class="wp-image-4115" srcset="/wp-content/uploads/2018/05/word-image-3658.png 969w, /wp-content/uploads/2018/05/word-image-3658-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3658-768x373.png 768w" sizes="(max-width: 969px) 100vw, 969px" /></p>
<p>
  ④创建测试方法使用U函数生成
</p>
<p><img loading="lazy" decoding="async" width="929" height="479" src="/wp-content/uploads/2018/05/word-image-3659.png" class="wp-image-4116" srcset="/wp-content/uploads/2018/05/word-image-3659.png 929w, /wp-content/uploads/2018/05/word-image-3659-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3659-768x396.png 768w" sizes="(max-width: 929px) 100vw, 929px" /></p>
<p>
  ⑤访问测试
</p>
<p><img loading="lazy" decoding="async" width="498" height="206" src="/wp-content/uploads/2018/05/word-image-3660.png" class="wp-image-4117" srcset="/wp-content/uploads/2018/05/word-image-3660.png 498w, /wp-content/uploads/2018/05/word-image-3660-300x124.png 300w" sizes="(max-width: 498px) 100vw, 498px" /></p>
<p>
  ⑥设置为重写模式
</p>
<p><img loading="lazy" decoding="async" width="981" height="416" src="/wp-content/uploads/2018/05/word-image-3661.png" class="wp-image-4118" srcset="/wp-content/uploads/2018/05/word-image-3661.png 981w, /wp-content/uploads/2018/05/word-image-3661-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3661-768x326.png 768w" sizes="(max-width: 981px) 100vw, 981px" /></p>
<p>
  再次查看效果
</p>
<p><img loading="lazy" decoding="async" width="517" height="176" src="/wp-content/uploads/2018/05/word-image-3662.png" class="wp-image-4119" srcset="/wp-content/uploads/2018/05/word-image-3662.png 517w, /wp-content/uploads/2018/05/word-image-3662-300x102.png 300w" sizes="(max-width: 517px) 100vw, 517px" /></p>
<h3>5.3.2、隐藏Home模块</h3>
<p>
  ①设置默认的模块以及容许访问的模块
</p>
<p><img loading="lazy" decoding="async" width="967" height="472" src="/wp-content/uploads/2018/05/word-image-3663.png" class="wp-image-4120" srcset="/wp-content/uploads/2018/05/word-image-3663.png 967w, /wp-content/uploads/2018/05/word-image-3663-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3663-768x375.png 768w" sizes="(max-width: 967px) 100vw, 967px" /></p>
<p>
  ②查看效果
</p>
<p><img loading="lazy" decoding="async" width="824" height="209" src="/wp-content/uploads/2018/05/word-image-3664.png" class="wp-image-4121" srcset="/wp-content/uploads/2018/05/word-image-3664.png 824w, /wp-content/uploads/2018/05/word-image-3664-300x76.png 300w, /wp-content/uploads/2018/05/word-image-3664-768x195.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></p>
<h2>5.4、实现后台的首页显示</h2>
<p>
  ①修改Index控制器代码
</p>
<p><img loading="lazy" decoding="async" width="948" height="476" src="/wp-content/uploads/2018/05/word-image-3665.png" class="wp-image-4122" srcset="/wp-content/uploads/2018/05/word-image-3665.png 948w, /wp-content/uploads/2018/05/word-image-3665-300x151.png 300w, /wp-content/uploads/2018/05/word-image-3665-768x386.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  ②创建视图目录
</p>
<p><img loading="lazy" decoding="async" width="926" height="210" src="/wp-content/uploads/2018/05/word-image-3666.png" class="wp-image-4123" srcset="/wp-content/uploads/2018/05/word-image-3666.png 926w, /wp-content/uploads/2018/05/word-image-3666-300x68.png 300w, /wp-content/uploads/2018/05/word-image-3666-768x174.png 768w" sizes="(max-width: 926px) 100vw, 926px" /></p>
<p>
  ③拷贝首页模板
</p>
<p><img loading="lazy" decoding="async" width="1287" height="541" src="/wp-content/uploads/2018/05/word-image-3667.png" class="wp-image-4124" srcset="/wp-content/uploads/2018/05/word-image-3667.png 1287w, /wp-content/uploads/2018/05/word-image-3667-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3667-768x323.png 768w, /wp-content/uploads/2018/05/word-image-3667-1024x430.png 1024w" sizes="(max-width: 1287px) 100vw, 1287px" /></p>
<p>
  ④查看效果
</p>
<p><img loading="lazy" decoding="async" width="956" height="399" src="/wp-content/uploads/2018/05/word-image-3668.png" class="wp-image-4125" srcset="/wp-content/uploads/2018/05/word-image-3668.png 956w, /wp-content/uploads/2018/05/word-image-3668-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3668-768x321.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></p>
<p>
  ⑤拷贝其他模板
</p>
<p><img loading="lazy" decoding="async" width="1312" height="517" src="/wp-content/uploads/2018/05/word-image-3669.png" class="wp-image-4126" srcset="/wp-content/uploads/2018/05/word-image-3669.png 1312w, /wp-content/uploads/2018/05/word-image-3669-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3669-768x303.png 768w, /wp-content/uploads/2018/05/word-image-3669-1024x404.png 1024w" sizes="(max-width: 1312px) 100vw, 1312px" /></p>
<p>
  ⑥查看效果
</p>
<p><img loading="lazy" decoding="async" width="1174" height="381" src="/wp-content/uploads/2018/05/word-image-3670.png" class="wp-image-4127" srcset="/wp-content/uploads/2018/05/word-image-3670.png 1174w, /wp-content/uploads/2018/05/word-image-3670-300x97.png 300w, /wp-content/uploads/2018/05/word-image-3670-768x249.png 768w, /wp-content/uploads/2018/05/word-image-3670-1024x332.png 1024w" sizes="(max-width: 1174px) 100vw, 1174px" /><br />
<img loading="lazy" decoding="async" width="782" height="169" src="/wp-content/uploads/2018/05/word-image-3671.png" class="wp-image-4128" srcset="/wp-content/uploads/2018/05/word-image-3671.png 782w, /wp-content/uploads/2018/05/word-image-3671-300x65.png 300w, /wp-content/uploads/2018/05/word-image-3671-768x166.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></p>
<p>
  ⑦修改首页的模板
</p>
<p><img loading="lazy" decoding="async" width="1088" height="610" src="/wp-content/uploads/2018/05/word-image-3672.png" class="wp-image-4129" srcset="/wp-content/uploads/2018/05/word-image-3672.png 1088w, /wp-content/uploads/2018/05/word-image-3672-300x168.png 300w, /wp-content/uploads/2018/05/word-image-3672-768x431.png 768w, /wp-content/uploads/2018/05/word-image-3672-1024x574.png 1024w" sizes="(max-width: 1088px) 100vw, 1088px" /></p>
<h2>5.5、处理后台资源地址</h2>
<p>
  ①拷贝资源文件
</p>
<p><img loading="lazy" decoding="async" width="1318" height="419" src="/wp-content/uploads/2018/05/word-image-3673.png" class="wp-image-4130" srcset="/wp-content/uploads/2018/05/word-image-3673.png 1318w, /wp-content/uploads/2018/05/word-image-3673-300x95.png 300w, /wp-content/uploads/2018/05/word-image-3673-768x244.png 768w, /wp-content/uploads/2018/05/word-image-3673-1024x326.png 1024w" sizes="(max-width: 1318px) 100vw, 1318px" /></p>
<p>
  ②自定义模板替换
</p>
<p><img loading="lazy" decoding="async" width="935" height="534" src="/wp-content/uploads/2018/05/word-image-3674.png" class="wp-image-4131" srcset="/wp-content/uploads/2018/05/word-image-3674.png 935w, /wp-content/uploads/2018/05/word-image-3674-300x171.png 300w, /wp-content/uploads/2018/05/word-image-3674-768x439.png 768w" sizes="(max-width: 935px) 100vw, 935px" /></p>
<p>
  ③修改top模板
</p>
<p><img loading="lazy" decoding="async" width="1073" height="453" src="/wp-content/uploads/2018/05/word-image-3675.png" class="wp-image-4132" srcset="/wp-content/uploads/2018/05/word-image-3675.png 1073w, /wp-content/uploads/2018/05/word-image-3675-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3675-768x324.png 768w, /wp-content/uploads/2018/05/word-image-3675-1024x432.png 1024w" sizes="(max-width: 1073px) 100vw, 1073px" /></p>
<p>
  ④修改menu模板
</p>
<p><img loading="lazy" decoding="async" width="1079" height="491" src="/wp-content/uploads/2018/05/word-image-3676.png" class="wp-image-4133" srcset="/wp-content/uploads/2018/05/word-image-3676.png 1079w, /wp-content/uploads/2018/05/word-image-3676-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3676-768x349.png 768w, /wp-content/uploads/2018/05/word-image-3676-1024x466.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /></p>
<p>
  ⑤修改main模板
</p>
<p><img loading="lazy" decoding="async" width="1076" height="525" src="/wp-content/uploads/2018/05/word-image-3677.png" class="wp-image-4134" srcset="/wp-content/uploads/2018/05/word-image-3677.png 1076w, /wp-content/uploads/2018/05/word-image-3677-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3677-768x375.png 768w, /wp-content/uploads/2018/05/word-image-3677-1024x500.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4022.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SVN 配置、使用</title>
		<link>/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/3551.html</link>
					<comments>/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/3551.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 10:17:38 +0000</pubDate>
				<category><![CDATA[SVN]]></category>
		<category><![CDATA[版本控制]]></category>
		<category><![CDATA[使用]]></category>
		<category><![CDATA[配置]]></category>
		<guid isPermaLink="false">/?p=3551</guid>

					<description><![CDATA[1、SVN概述 1.1、为什么要使用版本控制软件 在实际开发项目的过程中往往是多人在协同开发项目。如果多人在开 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>1、SVN概述</h1>
<h2>1.1、为什么要使用版本控制软件</h2>
<p>
  在实际开发项目的过程中往往是多人在协同开发项目。如果多人在开发项目就暴露出了代码的相关(代码的管理)的问题
</p>
<p>
  代码备份
</p>
<p>
  代码还原
</p>
<p>
  问题追踪
</p>
<p>
  对于上面列出的代码管理的相关问题就需要使用版本控制软件来帮助管理项目代码
</p>
<h2>1.2、常见的版本控制软件</h2>
<p>
  CVS：比较奇葩的产品(svn的前身)
</p>
<p>
  VSS：微软开发的版本控制软件
</p>
<p>
  ClearCase：IBM开发的一款收费的版本控制软件
</p>
<p>
  Svn：属于一款集中式的版本控制软件
</p>
<p>
  Git：属于一款分布式的版本控制软件
</p>
<h2>1.3、什么是SVN</h2>
<p>
  Subversion是一个自由/开源版本控制系统，c/s结构(有客户端有服务端),一组文件存放在中心版本库，这个版本库很像一个普通的文件服务器，只是它可以记录每一次文件和目录的修改，这便使你可以取得数据以前的版本，从而可以检查所作的更改。从这个方面看，许多人把版本控制系统当作一种“时间机器”。
</p>
<p>
  备注：svn是一种cs结构的软件。有客户端也有服务端。Svn是帮助管理项目代码的软件。能够实现问题追踪、代码还原、等功能。
</p>
<h1>SVN软件搭建</h1>
<h2>2.1、SVN软件获取</h2>
<p>
  SVN分为服务器端与客户端
</p>
<p>
  服务器端：VisualSVN 或  SubVersion
</p>
<p>
  客户端：TortoiseSVN
</p>
<p>
  服务端下载地址：https://www.visualsvn.com/visualsvn/download/
</p>
<p>
  客户端下载地址 ：http://tortoisesvn.net/downloads
</p>
<h2>2.2、SVN服务端的安装</h2>
<p>
  ①进入下载的svn软件目录
</p>
<p><img loading="lazy" decoding="async" width="851" height="205" src="/wp-content/uploads/2018/05/word-image-3142.png" class="wp-image-3552" srcset="/wp-content/uploads/2018/05/word-image-3142.png 851w, /wp-content/uploads/2018/05/word-image-3142-300x72.png 300w, /wp-content/uploads/2018/05/word-image-3142-768x185.png 768w" sizes="(max-width: 851px) 100vw, 851px" /></p>
<p>
  ②运行安装
</p>
<p><img loading="lazy" decoding="async" width="948" height="602" src="/wp-content/uploads/2018/05/word-image-3143.png" class="wp-image-3553" srcset="/wp-content/uploads/2018/05/word-image-3143.png 948w, /wp-content/uploads/2018/05/word-image-3143-300x191.png 300w, /wp-content/uploads/2018/05/word-image-3143-768x488.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  ③接受协议下一步
</p>
<p><img loading="lazy" decoding="async" width="487" height="377" src="/wp-content/uploads/2018/05/word-image-3144.png" class="wp-image-3554" srcset="/wp-content/uploads/2018/05/word-image-3144.png 487w, /wp-content/uploads/2018/05/word-image-3144-300x232.png 300w" sizes="(max-width: 487px) 100vw, 487px" /></p>
<p>
  ④选择界面类型
</p>
<p><img loading="lazy" decoding="async" width="612" height="373" src="/wp-content/uploads/2018/05/word-image-3145.png" class="wp-image-3555" srcset="/wp-content/uploads/2018/05/word-image-3145.png 612w, /wp-content/uploads/2018/05/word-image-3145-300x183.png 300w" sizes="(max-width: 612px) 100vw, 612px" /></p>
<p>
  ⑤选择安装类型
</p>
<p><img loading="lazy" decoding="async" width="484" height="381" src="/wp-content/uploads/2018/05/word-image-3146.png" class="wp-image-3556" srcset="/wp-content/uploads/2018/05/word-image-3146.png 484w, /wp-content/uploads/2018/05/word-image-3146-300x236.png 300w" sizes="(max-width: 484px) 100vw, 484px" /></p>
<p>
  安装操作暂时先到此处
</p>
<p>
  ⑥创建目录
</p>
<p><img loading="lazy" decoding="async" width="894" height="284" src="/wp-content/uploads/2018/05/word-image-3147.png" class="wp-image-3558" srcset="/wp-content/uploads/2018/05/word-image-3147.png 894w, /wp-content/uploads/2018/05/word-image-3147-300x95.png 300w, /wp-content/uploads/2018/05/word-image-3147-768x244.png 768w" sizes="(max-width: 894px) 100vw, 894px" /></p>
<p>
  ⑦继续安装指定安装地址
</p>
<p><img loading="lazy" decoding="async" width="499" height="384" src="/wp-content/uploads/2018/05/word-image-3148.png" class="wp-image-3559" srcset="/wp-content/uploads/2018/05/word-image-3148.png 499w, /wp-content/uploads/2018/05/word-image-3148-300x231.png 300w" sizes="(max-width: 499px) 100vw, 499px" /></p>
<p>
  ⑧剩余的一路下一步安装即可
</p>
<p>
  最终安装完成之后界面如下
</p>
<p><img loading="lazy" decoding="async" width="492" height="380" src="/wp-content/uploads/2018/05/word-image-3149.png" class="wp-image-3560" srcset="/wp-content/uploads/2018/05/word-image-3149.png 492w, /wp-content/uploads/2018/05/word-image-3149-300x232.png 300w" sizes="(max-width: 492px) 100vw, 492px" /></p>
<h2>2.3、安装客户端</h2>
<p>
  ①确定自己本机的位数
</p>
<p><img loading="lazy" decoding="async" width="1162" height="655" src="/wp-content/uploads/2018/05/word-image-3150.png" class="wp-image-3561" srcset="/wp-content/uploads/2018/05/word-image-3150.png 1162w, /wp-content/uploads/2018/05/word-image-3150-300x169.png 300w, /wp-content/uploads/2018/05/word-image-3150-768x433.png 768w, /wp-content/uploads/2018/05/word-image-3150-1024x577.png 1024w" sizes="(max-width: 1162px) 100vw, 1162px" /></p>
<p>
  ②根据自己电脑的位数选择安装的客户端版本
</p>
<p><img loading="lazy" decoding="async" width="891" height="317" src="/wp-content/uploads/2018/05/word-image-3151.png" class="wp-image-3562" srcset="/wp-content/uploads/2018/05/word-image-3151.png 891w, /wp-content/uploads/2018/05/word-image-3151-300x107.png 300w, /wp-content/uploads/2018/05/word-image-3151-768x273.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></p>
<p>
  ③运行svn的客户端
</p>
<p><img loading="lazy" decoding="async" width="770" height="593" src="/wp-content/uploads/2018/05/word-image-3152.png" class="wp-image-3563" srcset="/wp-content/uploads/2018/05/word-image-3152.png 770w, /wp-content/uploads/2018/05/word-image-3152-300x231.png 300w, /wp-content/uploads/2018/05/word-image-3152-768x591.png 768w" sizes="(max-width: 770px) 100vw, 770px" /></p>
<p>
  ④同意协议
</p>
<p><img loading="lazy" decoding="async" width="484" height="385" src="/wp-content/uploads/2018/05/word-image-3153.png" class="wp-image-3564" srcset="/wp-content/uploads/2018/05/word-image-3153.png 484w, /wp-content/uploads/2018/05/word-image-3153-300x239.png 300w" sizes="(max-width: 484px) 100vw, 484px" /></p>
<p>
  ⑤选择安装地址
</p>
<p><img loading="lazy" decoding="async" width="483" height="379" src="/wp-content/uploads/2018/05/word-image-3154.png" class="wp-image-3565" srcset="/wp-content/uploads/2018/05/word-image-3154.png 483w, /wp-content/uploads/2018/05/word-image-3154-300x235.png 300w" sizes="(max-width: 483px) 100vw, 483px" /></p>
<p>
  ⑥安装
</p>
<p><img loading="lazy" decoding="async" width="499" height="389" src="/wp-content/uploads/2018/05/word-image-3155.png" class="wp-image-3566" srcset="/wp-content/uploads/2018/05/word-image-3155.png 499w, /wp-content/uploads/2018/05/word-image-3155-300x234.png 300w" sizes="(max-width: 499px) 100vw, 499px" /></p>
<p>
  ⑦安装完成
</p>
<p><img loading="lazy" decoding="async" width="489" height="375" src="/wp-content/uploads/2018/05/word-image-3156.png" class="wp-image-3567" srcset="/wp-content/uploads/2018/05/word-image-3156.png 489w, /wp-content/uploads/2018/05/word-image-3156-300x230.png 300w" sizes="(max-width: 489px) 100vw, 489px" /></p>
<p>
  安装完成之后鼠标右键效果如下
</p>
<p><img loading="lazy" decoding="async" width="582" height="610" src="/wp-content/uploads/2018/05/word-image-3157.png" class="wp-image-3568" srcset="/wp-content/uploads/2018/05/word-image-3157.png 582w, /wp-content/uploads/2018/05/word-image-3157-286x300.png 286w" sizes="(max-width: 582px) 100vw, 582px" /></p>
<h2>2.4、安装中文的语言包</h2>
<p>
  ①运行安装包
</p>
<p><img loading="lazy" decoding="async" width="746" height="513" src="/wp-content/uploads/2018/05/word-image-3158.png" class="wp-image-3569" srcset="/wp-content/uploads/2018/05/word-image-3158.png 746w, /wp-content/uploads/2018/05/word-image-3158-300x206.png 300w, /wp-content/uploads/2018/05/word-image-3158-220x150.png 220w" sizes="(max-width: 746px) 100vw, 746px" /></p>
<p>
  ②下一步安装
</p>
<p><img loading="lazy" decoding="async" width="493" height="383" src="/wp-content/uploads/2018/05/word-image-3159.png" class="wp-image-3570" srcset="/wp-content/uploads/2018/05/word-image-3159.png 493w, /wp-content/uploads/2018/05/word-image-3159-300x233.png 300w" sizes="(max-width: 493px) 100vw, 493px" /></p>
<h2>2.5、关于语言问题</h2>
<p>
  对于语言包安装完成之后默认会使用对应的语言包。如果安装完成之后还没有切换可以手动指定语言具体操作如下
</p>
<p>
  ①右键进入到svn的设置界面
</p>
<p><img loading="lazy" decoding="async" width="683" height="600" src="/wp-content/uploads/2018/05/word-image-3160.png" class="wp-image-3571" srcset="/wp-content/uploads/2018/05/word-image-3160.png 683w, /wp-content/uploads/2018/05/word-image-3160-300x264.png 300w" sizes="(max-width: 683px) 100vw, 683px" /></p>
<p>
  ②设置语言
</p>
<p><img loading="lazy" decoding="async" width="771" height="582" src="/wp-content/uploads/2018/05/word-image-3161.png" class="wp-image-3572" srcset="/wp-content/uploads/2018/05/word-image-3161.png 771w, /wp-content/uploads/2018/05/word-image-3161-300x226.png 300w, /wp-content/uploads/2018/05/word-image-3161-768x580.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></p>
<p>
  注意：对于目前svn的客户端跟服务端都是安装在自己的本机。需要区别后期对服务端跟客户端的操作
</p>
<h1>SVN仓库配置</h1>
<h2>3.1、什么是仓库</h2>
<p>
  对于svn作用是进行版本控制。而版本控制的实现是通过记录代码文件实现。因此svn需要保存代码文件。具体保存代码文件的目录就叫做仓库。对于svn的仓库包括的功能并不仅限于保存代码(svn仓库中保存的代码文件并不是直接保存用户编写的文件)。还支持权限等控制。
</p>
<h2>3.2、配置仓库</h2>
<p>
  ①在d:/svn目录下创建总仓库
</p>
<p><img loading="lazy" decoding="async" width="738" height="274" src="/wp-content/uploads/2018/05/word-image-3162.png" class="wp-image-3573" srcset="/wp-content/uploads/2018/05/word-image-3162.png 738w, /wp-content/uploads/2018/05/word-image-3162-300x111.png 300w" sizes="(max-width: 738px) 100vw, 738px" /></p>
<p>
  ②在web目录下建立一个测试的仓库
</p>
<p><img loading="lazy" decoding="async" width="746" height="293" src="/wp-content/uploads/2018/05/word-image-3163.png" class="wp-image-3574" srcset="/wp-content/uploads/2018/05/word-image-3163.png 746w, /wp-content/uploads/2018/05/word-image-3163-300x118.png 300w" sizes="(max-width: 746px) 100vw, 746px" /></p>
<p>
  ③运行cmd
</p>
<p><img loading="lazy" decoding="async" width="397" height="585" src="/wp-content/uploads/2018/05/word-image-3164.png" class="wp-image-3575" srcset="/wp-content/uploads/2018/05/word-image-3164.png 397w, /wp-content/uploads/2018/05/word-image-3164-204x300.png 204w" sizes="(max-width: 397px) 100vw, 397px" /></p>
<p>
  ④创建仓库
</p>
<p>
  在命令行下执行命令本质就是在操作系统的全局环境变量的目录中搜索对应同名的可执行文件
</p>
<p><img loading="lazy" decoding="async" width="877" height="480" src="/wp-content/uploads/2018/05/word-image-3165.png" class="wp-image-3576" srcset="/wp-content/uploads/2018/05/word-image-3165.png 877w, /wp-content/uploads/2018/05/word-image-3165-300x164.png 300w, /wp-content/uploads/2018/05/word-image-3165-768x420.png 768w" sizes="(max-width: 877px) 100vw, 877px" /></p>
<p>
  ⑤查看仓库目录下的文件
</p>
<p><img loading="lazy" decoding="async" width="900" height="353" src="/wp-content/uploads/2018/05/word-image-3166.png" class="wp-image-3577" srcset="/wp-content/uploads/2018/05/word-image-3166.png 900w, /wp-content/uploads/2018/05/word-image-3166-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3166-768x301.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<h2>3.3、启动svn的服务端软提供服务</h2>
<h3>3.3.1、启动svn服务端</h3>
<p>
  ①使用命令启动svn服务
</p>
<p><img loading="lazy" decoding="async" width="977" height="574" src="/wp-content/uploads/2018/05/word-image-3167.png" class="wp-image-3578" srcset="/wp-content/uploads/2018/05/word-image-3167.png 977w, /wp-content/uploads/2018/05/word-image-3167-300x176.png 300w, /wp-content/uploads/2018/05/word-image-3167-768x451.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<p>
  -d：指定为后台方式启动(目前存在问题并不是真正的后台方式启动)
</p>
<p>
  -r：指定仓库的地址
</p>
<p>
  注意：此处的后台方式启动存在问题。并不是真正后台方式启动因此cmd处于一个“挂起”状态。此时的cmd不要关闭。如果一旦关闭服务中断
</p>
<h3>3.3.2、使用客户端操作服务端</h3>
<p>
  ①在Apache的web跟目录下创建一个目录
</p>
<p><img loading="lazy" decoding="async" width="1061" height="259" src="/wp-content/uploads/2018/05/word-image-3168.png" class="wp-image-3579" srcset="/wp-content/uploads/2018/05/word-image-3168.png 1061w, /wp-content/uploads/2018/05/word-image-3168-300x73.png 300w, /wp-content/uploads/2018/05/word-image-3168-768x187.png 768w, /wp-content/uploads/2018/05/word-image-3168-1024x250.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  ②检出SVN上的项目
</p>
<p>
  先右键选择”SVN检出”
</p>
<p><img loading="lazy" decoding="async" width="420" height="449" src="/wp-content/uploads/2018/05/word-image-3169.png" class="wp-image-3580" srcset="/wp-content/uploads/2018/05/word-image-3169.png 420w, /wp-content/uploads/2018/05/word-image-3169-281x300.png 281w" sizes="(max-width: 420px) 100vw, 420px" /></p>
<p>
  然后填写相关地址即可
</p>
<p><img loading="lazy" decoding="async" width="625" height="394" src="/wp-content/uploads/2018/05/word-image-3170.png" class="wp-image-3581" srcset="/wp-content/uploads/2018/05/word-image-3170.png 625w, /wp-content/uploads/2018/05/word-image-3170-300x189.png 300w" sizes="(max-width: 625px) 100vw, 625px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="642" height="293" src="/wp-content/uploads/2018/05/word-image-3171.png" class="wp-image-3582" srcset="/wp-content/uploads/2018/05/word-image-3171.png 642w, /wp-content/uploads/2018/05/word-image-3171-300x137.png 300w" sizes="(max-width: 642px) 100vw, 642px" /></p>
<p>
  ③查看客户端的shop目录下的文件
</p>
<p><img loading="lazy" decoding="async" width="759" height="252" src="/wp-content/uploads/2018/05/word-image-3172.png" class="wp-image-3583" srcset="/wp-content/uploads/2018/05/word-image-3172.png 759w, /wp-content/uploads/2018/05/word-image-3172-300x100.png 300w" sizes="(max-width: 759px) 100vw, 759px" /></p>
<p>
  对于上图的文件需要开启查操作系统用的看隐藏文件功能
</p>
<p>
  ④使用SVN的增加功能
</p>
<p>
  首先增加文件
</p>
<p><img loading="lazy" decoding="async" width="987" height="296" src="/wp-content/uploads/2018/05/word-image-3173.png" class="wp-image-3584" srcset="/wp-content/uploads/2018/05/word-image-3173.png 987w, /wp-content/uploads/2018/05/word-image-3173-300x90.png 300w, /wp-content/uploads/2018/05/word-image-3173-768x230.png 768w" sizes="(max-width: 987px) 100vw, 987px" /></p>
<p>
  然后增加到上传队列中(告知svn有一个文件需要记录)
</p>
<p>
  具体操作文字说明：选中文件-&gt;右键-&gt;TortoiseSVN-&gt;加入
</p>
<p><img loading="lazy" decoding="async" width="878" height="443" src="/wp-content/uploads/2018/05/word-image-3174.png" class="wp-image-3585" srcset="/wp-content/uploads/2018/05/word-image-3174.png 878w, /wp-content/uploads/2018/05/word-image-3174-300x151.png 300w, /wp-content/uploads/2018/05/word-image-3174-768x387.png 768w" sizes="(max-width: 878px) 100vw, 878px" /></p>
<p>
  对于单独的文件增加没有任何的提示。如果增加文件夹提示弹出框选中。效果如下
</p>
<p><img loading="lazy" decoding="async" width="1014" height="507" src="/wp-content/uploads/2018/05/word-image-3175.png" class="wp-image-3586" srcset="/wp-content/uploads/2018/05/word-image-3175.png 1014w, /wp-content/uploads/2018/05/word-image-3175-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3175-768x384.png 768w" sizes="(max-width: 1014px) 100vw, 1014px" /></p>
<p>
  ⑤提交文件
</p>
<p><img loading="lazy" decoding="async" width="563" height="597" src="/wp-content/uploads/2018/05/word-image-3176.png" class="wp-image-3587" srcset="/wp-content/uploads/2018/05/word-image-3176.png 563w, /wp-content/uploads/2018/05/word-image-3176-283x300.png 283w" sizes="(max-width: 563px) 100vw, 563px" /></p>
<p>
  在弹出框中填写相关的内容
</p>
<p><img loading="lazy" decoding="async" width="603" height="520" src="/wp-content/uploads/2018/05/word-image-3177.png" class="wp-image-3588" srcset="/wp-content/uploads/2018/05/word-image-3177.png 603w, /wp-content/uploads/2018/05/word-image-3177-300x259.png 300w" sizes="(max-width: 603px) 100vw, 603px" /></p>
<p>
  具体结果如下
</p>
<p><img loading="lazy" decoding="async" width="646" height="292" src="/wp-content/uploads/2018/05/word-image-3178.png" class="wp-image-3589" srcset="/wp-content/uploads/2018/05/word-image-3178.png 646w, /wp-content/uploads/2018/05/word-image-3178-300x136.png 300w" sizes="(max-width: 646px) 100vw, 646px" /></p>
<p>
  产生错误的原因是因为有权限相关的控制
</p>
<p>
  ⑥解决权限问题
</p>
<p>
  修改权限配置文件
</p>
<p><img loading="lazy" decoding="async" width="1059" height="560" src="/wp-content/uploads/2018/05/word-image-3179.png" class="wp-image-3590" srcset="/wp-content/uploads/2018/05/word-image-3179.png 1059w, /wp-content/uploads/2018/05/word-image-3179-300x159.png 300w, /wp-content/uploads/2018/05/word-image-3179-768x406.png 768w, /wp-content/uploads/2018/05/word-image-3179-1024x541.png 1024w" sizes="(max-width: 1059px) 100vw, 1059px" /></p>
<p>
  然后重启svn服务
</p>
<p><img loading="lazy" decoding="async" width="626" height="174" src="/wp-content/uploads/2018/05/word-image-3180.png" class="wp-image-3591" srcset="/wp-content/uploads/2018/05/word-image-3180.png 626w, /wp-content/uploads/2018/05/word-image-3180-300x83.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></p>
<p>
  ⑦再次提交代码测试
</p>
<p><img loading="lazy" decoding="async" width="604" height="508" src="/wp-content/uploads/2018/05/word-image-3181.png" class="wp-image-3592" srcset="/wp-content/uploads/2018/05/word-image-3181.png 604w, /wp-content/uploads/2018/05/word-image-3181-300x252.png 300w" sizes="(max-width: 604px) 100vw, 604px" /><br />
<img loading="lazy" decoding="async" width="645" height="299" src="/wp-content/uploads/2018/05/word-image-3182.png" class="wp-image-3593" srcset="/wp-content/uploads/2018/05/word-image-3182.png 645w, /wp-content/uploads/2018/05/word-image-3182-300x139.png 300w" sizes="(max-width: 645px) 100vw, 645px" /></p>
<p>
  关于客户端的操作总结：
</p>
<ol>
<li>
  svn检出：建立与svn服务端的连接
</li>
<li>
  Svn增加文件：告知svn服务端需要记录的内容
</li>
<li>
  Svn提交：具体将文件代码上传到svn服务端进行保存
</li>
</ol>
<p>
  关于服务端总结：
</p>
<p>
  启动服务：整个svn服务能够正常的运行
</p>
<p>
  开启匿名访问的权限：可以提交代码
</p>
<h2>3.4、svn的使用流程总结</h2>
<p><img loading="lazy" decoding="async" width="928" height="487" src="/wp-content/uploads/2018/05/word-image-3183.png" class="wp-image-3594" srcset="/wp-content/uploads/2018/05/word-image-3183.png 928w, /wp-content/uploads/2018/05/word-image-3183-300x157.png 300w, /wp-content/uploads/2018/05/word-image-3183-768x403.png 768w" sizes="(max-width: 928px) 100vw, 928px" /></p>
<ol>
<li>
  对于任何一个开发人员首先必须要要与svn服务端进行连接。也就是需要进行svn的检出操作检出只进行一次。后期需要获取最新的代码使用svn的更新功能
</li>
<li>
  如果开发者增加了信息文件。需要将文件添加到上传svn的队列中
</li>
<li>
  不论是增加新文件还是修改已有的文件，需要提交到svn上（提交一般功能实现了正常）
</li>
</ol>
<h1>SVN图标介绍</h1>
<h2>4.1、svn图标</h2>
<p>
  即svn给项目中的每个文件及目录都会增加的一些图标帮助标识项目的修改情况
</p>
<h2>4.2、查看svn中图标种类</h2>
<p>
  ①进入svn的设置
</p>
<p><img loading="lazy" decoding="async" width="491" height="550" src="/wp-content/uploads/2018/05/word-image-3184.png" class="wp-image-3595" srcset="/wp-content/uploads/2018/05/word-image-3184.png 491w, /wp-content/uploads/2018/05/word-image-3184-268x300.png 268w" sizes="(max-width: 491px) 100vw, 491px" /></p>
<p>
  ②查看图标集样式
</p>
<p><img loading="lazy" decoding="async" width="759" height="588" src="/wp-content/uploads/2018/05/word-image-3185.png" class="wp-image-3596" srcset="/wp-content/uploads/2018/05/word-image-3185.png 759w, /wp-content/uploads/2018/05/word-image-3185-300x232.png 300w" sizes="(max-width: 759px) 100vw, 759px" /></p>
<p>
  备注：SVN图标虽然支持的比较多。但是实际使用过程中能够显示的并不多。对于Windows操作系统只能支持使用最多15个小图标。如果有其他软件使用了。那么会导致图标不显示
</p>
<h2>4.3、图标介绍</h2>
<p>
  ①常规图标
</p>
<p><img loading="lazy" decoding="async" width="72" height="57" src="/wp-content/uploads/2018/05/word-image-3186.png" class="wp-image-3597" /></p>
<p>
  含义：表示当前文件或者目录与svn服务端上的保持一致
</p>
<p>
  ②修改图标
</p>
<p><img loading="lazy" decoding="async" width="79" height="53" src="/wp-content/uploads/2018/05/word-image-3187.png" class="wp-image-3598" /></p>
<p>
  含义：当前的文件跟svn服务端上的文件不一致。有修改
</p>
<p>
  ③冲突图标
</p>
<p><img loading="lazy" decoding="async" width="77" height="58" src="/wp-content/uploads/2018/05/word-image-3188.png" class="wp-image-3599" /></p>
<p>
  含义：当前的内容跟svn中的内容有冲突。跟修改图标不是一个意思。表示当前修改的文件使用的不是svn中的最新文件
</p>
<p>
  ④只读图标
</p>
<p><img loading="lazy" decoding="async" width="79" height="54" src="/wp-content/uploads/2018/05/word-image-3189.png" class="wp-image-3600" /></p>
<p>
  含义：当前文件为只读属性
</p>
<p>
  ⑤已删除
</p>
<p><img loading="lazy" decoding="async" width="75" height="50" src="/wp-content/uploads/2018/05/word-image-3190.png" class="wp-image-3601" /></p>
<p>
  含义：表示当前的文件在svn服务端已经删除
</p>
<p>
  ⑥锁定图标
</p>
<p><img loading="lazy" decoding="async" width="76" height="58" src="/wp-content/uploads/2018/05/word-image-3191.png" class="wp-image-3602" /></p>
<p>
  含义：当前文件处于锁定的状态
</p>
<p>
  ⑦增加图标
</p>
<p><img loading="lazy" decoding="async" width="70" height="55" src="/wp-content/uploads/2018/05/word-image-3192.png" class="wp-image-3603" /></p>
<p>
  含义：文件已经处于svn上传的队列
</p>
<p>
  ⑧忽略图标
</p>
<p><img loading="lazy" decoding="async" width="74" height="56" src="/wp-content/uploads/2018/05/word-image-3193.png" class="wp-image-3604" /></p>
<p>
  含义：文件处于一个忽略状态不会提交到svn服务器上
</p>
<p>
  ⑨无版本控制
</p>
<p><img loading="lazy" decoding="async" width="76" height="55" src="/wp-content/uploads/2018/05/word-image-3194.png" class="wp-image-3605" /></p>
<p>
  含义：表示当前的文件不受svn版本控制
</p>
<p>
  队列：排着队处理任务。每一个逐步执行。按照顺序进行没有插队
</p>
<h1>svn使用</h1>
<h2>5.1、忽略功能</h2>
<p>
  在项目开发的过程中部分文件可能不需要上传到SVN的服务器上。
</p>
<p>
  例如配置文件。在配置文件中往往记录数据库的配置信息。在开发时是使用的本机的信息。当项目上线如果还更新配置文件就会导致项目出现故障
</p>
<p>
  ①忽略指定的文件
</p>
<p><img loading="lazy" decoding="async" width="1036" height="452" src="/wp-content/uploads/2018/05/word-image-3195.png" class="wp-image-3606" srcset="/wp-content/uploads/2018/05/word-image-3195.png 1036w, /wp-content/uploads/2018/05/word-image-3195-300x131.png 300w, /wp-content/uploads/2018/05/word-image-3195-768x335.png 768w, /wp-content/uploads/2018/05/word-image-3195-1024x447.png 1024w" sizes="(max-width: 1036px) 100vw, 1036px" /></p>
<p>
  选中要忽略的文件右键-&gt;tortoiseSVN-&gt;增加到忽略列表-&gt;选中文件
</p>
<p>
  ②增加某类文件的忽略
</p>
<p><img loading="lazy" decoding="async" width="963" height="486" src="/wp-content/uploads/2018/05/word-image-3196.png" class="wp-image-3607" srcset="/wp-content/uploads/2018/05/word-image-3196.png 963w, /wp-content/uploads/2018/05/word-image-3196-300x151.png 300w, /wp-content/uploads/2018/05/word-image-3196-768x388.png 768w" sizes="(max-width: 963px) 100vw, 963px" /></p>
<h2>5.2、SVN的增加功能</h2>
<p>
  Svn增加可以将新的文件添加到上传到svn服务端的队列当中
</p>
<p><img loading="lazy" decoding="async" width="1051" height="406" src="/wp-content/uploads/2018/05/word-image-3197.png" class="wp-image-3608" srcset="/wp-content/uploads/2018/05/word-image-3197.png 1051w, /wp-content/uploads/2018/05/word-image-3197-300x116.png 300w, /wp-content/uploads/2018/05/word-image-3197-768x297.png 768w, /wp-content/uploads/2018/05/word-image-3197-1024x396.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<h2>5.3、svn的更新</h2>
<p>
  开发项目过中往往都是多人在进行开发。如果有某一个人修改代码提交了。另外一个人想要使用最新的代码就需要使用svn的更新功能
</p>
<p>
  ①先在Apache的web目录下建立shop2目录演示另外一个客户端
</p>
<p><img loading="lazy" decoding="async" width="974" height="271" src="/wp-content/uploads/2018/05/word-image-3198.png" class="wp-image-3609" srcset="/wp-content/uploads/2018/05/word-image-3198.png 974w, /wp-content/uploads/2018/05/word-image-3198-300x83.png 300w, /wp-content/uploads/2018/05/word-image-3198-768x214.png 768w" sizes="(max-width: 974px) 100vw, 974px" /></p>
<p>
  ②在shop2目录下建立文件或者修改在提交代码
</p>
<p><img loading="lazy" decoding="async" width="734" height="337" src="/wp-content/uploads/2018/05/word-image-3199.png" class="wp-image-3610" srcset="/wp-content/uploads/2018/05/word-image-3199.png 734w, /wp-content/uploads/2018/05/word-image-3199-300x138.png 300w" sizes="(max-width: 734px) 100vw, 734px" /></p>
<p>
  ③在shop2下进行提交
</p>
<p><img loading="lazy" decoding="async" width="605" height="511" src="/wp-content/uploads/2018/05/word-image-3200.png" class="wp-image-3611" srcset="/wp-content/uploads/2018/05/word-image-3200.png 605w, /wp-content/uploads/2018/05/word-image-3200-300x253.png 300w" sizes="(max-width: 605px) 100vw, 605px" /></p>
<p>
  ④在shop目录下进行更新
</p>
<p><img loading="lazy" decoding="async" width="748" height="657" src="/wp-content/uploads/2018/05/word-image-3201.png" class="wp-image-3612" srcset="/wp-content/uploads/2018/05/word-image-3201.png 748w, /wp-content/uploads/2018/05/word-image-3201-300x264.png 300w" sizes="(max-width: 748px) 100vw, 748px" /><br />
<img loading="lazy" decoding="async" width="646" height="285" src="/wp-content/uploads/2018/05/word-image-3202.png" class="wp-image-3613" srcset="/wp-content/uploads/2018/05/word-image-3202.png 646w, /wp-content/uploads/2018/05/word-image-3202-300x132.png 300w" sizes="(max-width: 646px) 100vw, 646px" /></p>
<p>
  备注在实际开发过程中客户端使用最多的就是svn的更新、svn的添加、svn的提交功能
</p>
<h2>5.4、SVN的冲突</h2>
<h3>5.4.1、冲突产生的原因</h3>
<p><img loading="lazy" decoding="async" width="900" height="479" src="/wp-content/uploads/2018/05/word-image-3203.png" class="wp-image-3614" srcset="/wp-content/uploads/2018/05/word-image-3203.png 900w, /wp-content/uploads/2018/05/word-image-3203-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3203-768x409.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<p>
  针对同一个文件才有可能产生冲突
</p>
<h3>5.4.2、演示冲突问题</h3>
<p>
  ①在shop下修改index.php
</p>
<p><img loading="lazy" decoding="async" width="714" height="374" src="/wp-content/uploads/2018/05/word-image-3204.png" class="wp-image-3615" srcset="/wp-content/uploads/2018/05/word-image-3204.png 714w, /wp-content/uploads/2018/05/word-image-3204-300x157.png 300w" sizes="(max-width: 714px) 100vw, 714px" /></p>
<p>
  ②shop下提交代码
</p>
<p><img loading="lazy" decoding="async" width="652" height="316" src="/wp-content/uploads/2018/05/word-image-3205.png" class="wp-image-3616" srcset="/wp-content/uploads/2018/05/word-image-3205.png 652w, /wp-content/uploads/2018/05/word-image-3205-300x145.png 300w" sizes="(max-width: 652px) 100vw, 652px" /></p>
<p>
  ③在shop2目录下修改index.php
</p>
<p><img loading="lazy" decoding="async" width="647" height="378" src="/wp-content/uploads/2018/05/word-image-3206.png" class="wp-image-3617" srcset="/wp-content/uploads/2018/05/word-image-3206.png 647w, /wp-content/uploads/2018/05/word-image-3206-300x175.png 300w" sizes="(max-width: 647px) 100vw, 647px" /></p>
<p>
  ④在shop2下提交代码
</p>
<p><img loading="lazy" decoding="async" width="602" height="527" src="/wp-content/uploads/2018/05/word-image-3207.png" class="wp-image-3618" srcset="/wp-content/uploads/2018/05/word-image-3207.png 602w, /wp-content/uploads/2018/05/word-image-3207-300x263.png 300w" sizes="(max-width: 602px) 100vw, 602px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="646" height="292" src="/wp-content/uploads/2018/05/word-image-3208.png" class="wp-image-3619" srcset="/wp-content/uploads/2018/05/word-image-3208.png 646w, /wp-content/uploads/2018/05/word-image-3208-300x136.png 300w" sizes="(max-width: 646px) 100vw, 646px" /></p>
<h3>5.4.3、解决冲突</h3>
<p>
  ①更新最新的代码
</p>
<p><img loading="lazy" decoding="async" width="636" height="286" src="/wp-content/uploads/2018/05/word-image-3209.png" class="wp-image-3620" srcset="/wp-content/uploads/2018/05/word-image-3209.png 636w, /wp-content/uploads/2018/05/word-image-3209-300x135.png 300w" sizes="(max-width: 636px) 100vw, 636px" /></p>
<p>
  ②查看冲突的文件及目录
</p>
<p><img loading="lazy" decoding="async" width="877" height="307" src="/wp-content/uploads/2018/05/word-image-3210.png" class="wp-image-3621" srcset="/wp-content/uploads/2018/05/word-image-3210.png 877w, /wp-content/uploads/2018/05/word-image-3210-300x105.png 300w, /wp-content/uploads/2018/05/word-image-3210-768x269.png 768w" sizes="(max-width: 877px) 100vw, 877px" /></p>
<p>
  ③处理冲突问题
</p>
<p>
  首先选中其他跟冲突相关的文件删除
</p>
<p><img loading="lazy" decoding="async" width="703" height="601" src="/wp-content/uploads/2018/05/word-image-3211.png" class="wp-image-3622" srcset="/wp-content/uploads/2018/05/word-image-3211.png 703w, /wp-content/uploads/2018/05/word-image-3211-300x256.png 300w" sizes="(max-width: 703px) 100vw, 703px" /></p>
<p>
  然后手动的修改冲突文件
</p>
<p><img loading="lazy" decoding="async" width="821" height="473" src="/wp-content/uploads/2018/05/word-image-3212.png" class="wp-image-3623" srcset="/wp-content/uploads/2018/05/word-image-3212.png 821w, /wp-content/uploads/2018/05/word-image-3212-300x173.png 300w, /wp-content/uploads/2018/05/word-image-3212-768x442.png 768w" sizes="(max-width: 821px) 100vw, 821px" /></p>
<p>
  ⑤SVN提交
</p>
<p><img loading="lazy" decoding="async" width="594" height="552" src="/wp-content/uploads/2018/05/word-image-3213.png" class="wp-image-3624" srcset="/wp-content/uploads/2018/05/word-image-3213.png 594w, /wp-content/uploads/2018/05/word-image-3213-300x279.png 300w" sizes="(max-width: 594px) 100vw, 594px" /></p>
<p>
  对于冲突最后的修改文件需要根据实际的业务情况处理。进行手动的合并操作
</p>
<h2>5.5、svn版本回退</h2>
<p>
  Svn版本的回退可以方便回退到任意的一个版本
</p>
<p>
  ①更新至版本
</p>
<p><img loading="lazy" decoding="async" width="872" height="645" src="/wp-content/uploads/2018/05/word-image-3214.png" class="wp-image-3625" srcset="/wp-content/uploads/2018/05/word-image-3214.png 872w, /wp-content/uploads/2018/05/word-image-3214-300x222.png 300w, /wp-content/uploads/2018/05/word-image-3214-768x568.png 768w" sizes="(max-width: 872px) 100vw, 872px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="374" height="308" src="/wp-content/uploads/2018/05/word-image-3215.png" class="wp-image-3626" srcset="/wp-content/uploads/2018/05/word-image-3215.png 374w, /wp-content/uploads/2018/05/word-image-3215-300x247.png 300w" sizes="(max-width: 374px) 100vw, 374px" /></p>
<p>
  ②通过查看日志确认自己要更新的版本
</p>
<p><img loading="lazy" decoding="async" width="1234" height="451" src="/wp-content/uploads/2018/05/word-image-3216.png" class="wp-image-3627" srcset="/wp-content/uploads/2018/05/word-image-3216.png 1234w, /wp-content/uploads/2018/05/word-image-3216-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3216-768x281.png 768w, /wp-content/uploads/2018/05/word-image-3216-1024x374.png 1024w" sizes="(max-width: 1234px) 100vw, 1234px" /></p>
<p>
  ③通过日志进行还原到版本
</p>
<p><img loading="lazy" decoding="async" width="810" height="537" src="/wp-content/uploads/2018/05/word-image-3217.png" class="wp-image-3628" srcset="/wp-content/uploads/2018/05/word-image-3217.png 810w, /wp-content/uploads/2018/05/word-image-3217-300x199.png 300w, /wp-content/uploads/2018/05/word-image-3217-768x509.png 768w" sizes="(max-width: 810px) 100vw, 810px" /></p>
<h2>5.6、svn多仓库配置</h2>
<p>
  在实际项目中往往项目比较多。需要多个仓库。对于仓库的创建比较容易。但是在启动svn服务的时候只能使用一个仓库。此处就需要使用到svn的多仓库配置
</p>
<p>
  ①创建oa文件夹
</p>
<p><img loading="lazy" decoding="async" width="873" height="322" src="/wp-content/uploads/2018/05/word-image-3218.png" class="wp-image-3629" srcset="/wp-content/uploads/2018/05/word-image-3218.png 873w, /wp-content/uploads/2018/05/word-image-3218-300x111.png 300w, /wp-content/uploads/2018/05/word-image-3218-768x283.png 768w" sizes="(max-width: 873px) 100vw, 873px" /></p>
<p>
  ②创建oa的仓库
</p>
<p><img loading="lazy" decoding="async" width="590" height="137" src="/wp-content/uploads/2018/05/word-image-3219.png" class="wp-image-3630" srcset="/wp-content/uploads/2018/05/word-image-3219.png 590w, /wp-content/uploads/2018/05/word-image-3219-300x70.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="722" height="272" src="/wp-content/uploads/2018/05/word-image-3220.png" class="wp-image-3631" srcset="/wp-content/uploads/2018/05/word-image-3220.png 722w, /wp-content/uploads/2018/05/word-image-3220-300x113.png 300w" sizes="(max-width: 722px) 100vw, 722px" /></p>
<p>
  ③多仓库的方式启动svn服务
</p>
<p><img loading="lazy" decoding="async" width="800" height="173" src="/wp-content/uploads/2018/05/word-image-3221.png" class="wp-image-3632" srcset="/wp-content/uploads/2018/05/word-image-3221.png 800w, /wp-content/uploads/2018/05/word-image-3221-300x65.png 300w, /wp-content/uploads/2018/05/word-image-3221-768x166.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p>
  ④客户端检出
</p>
<p>
  客户端检出时需要注意仓库的地址：
</p>
<p><img loading="lazy" decoding="async" width="669" height="516" src="/wp-content/uploads/2018/05/word-image-3222.png" class="wp-image-3633" srcset="/wp-content/uploads/2018/05/word-image-3222.png 669w, /wp-content/uploads/2018/05/word-image-3222-300x231.png 300w" sizes="(max-width: 669px) 100vw, 669px" /></p>
<h2>5.7、svn重定向</h2>
<p>
  对于svn服务端的仓库地址有修改，对于客户端想要正常使用需要更新svn服务端的地址。操作如下：
</p>
<p>
  先打开svn的重定向提示
</p>
<p><img loading="lazy" decoding="async" width="820" height="613" src="/wp-content/uploads/2018/05/word-image-3223.png" class="wp-image-3634" srcset="/wp-content/uploads/2018/05/word-image-3223.png 820w, /wp-content/uploads/2018/05/word-image-3223-300x224.png 300w, /wp-content/uploads/2018/05/word-image-3223-768x574.png 768w" sizes="(max-width: 820px) 100vw, 820px" /></p>
<p>
  填写地址
</p>
<p><img loading="lazy" decoding="async" width="453" height="179" src="/wp-content/uploads/2018/05/word-image-3224.png" class="wp-image-3635" srcset="/wp-content/uploads/2018/05/word-image-3224.png 453w, /wp-content/uploads/2018/05/word-image-3224-300x119.png 300w" sizes="(max-width: 453px) 100vw, 453px" /></p>
<p>
  在弹窗选择迁移即可
</p>
<p><img loading="lazy" decoding="async" width="507" height="343" src="/wp-content/uploads/2018/05/word-image-3225.png" class="wp-image-3636" srcset="/wp-content/uploads/2018/05/word-image-3225.png 507w, /wp-content/uploads/2018/05/word-image-3225-300x203.png 300w, /wp-content/uploads/2018/05/word-image-3225-220x150.png 220w" sizes="(max-width: 507px) 100vw, 507px" /></p>
<h2>5.8、svn权限认证</h2>
<p>
  Svn权限认证即通过用户名跟密码的校验之后才可以进行svn的相关操作。注意svn的权限认证基于仓库。
</p>
<h3>5.8.1、开启svn的权限认证</h3>
<p>
  ①进入到仓库的查看配置文件
</p>
<p><img loading="lazy" decoding="async" width="1021" height="334" src="/wp-content/uploads/2018/05/word-image-3226.png" class="wp-image-3637" srcset="/wp-content/uploads/2018/05/word-image-3226.png 1021w, /wp-content/uploads/2018/05/word-image-3226-300x98.png 300w, /wp-content/uploads/2018/05/word-image-3226-768x251.png 768w" sizes="(max-width: 1021px) 100vw, 1021px" /></p>
<p>
  ②修改svnserve.conf文件
</p>
<p><img loading="lazy" decoding="async" width="1185" height="683" src="/wp-content/uploads/2018/05/word-image-3227.png" class="wp-image-3638" srcset="/wp-content/uploads/2018/05/word-image-3227.png 1185w, /wp-content/uploads/2018/05/word-image-3227-300x173.png 300w, /wp-content/uploads/2018/05/word-image-3227-768x443.png 768w, /wp-content/uploads/2018/05/word-image-3227-1024x590.png 1024w" sizes="(max-width: 1185px) 100vw, 1185px" /></p>
<p>
  ②修改passwd文件
</p>
<p><img loading="lazy" decoding="async" width="789" height="546" src="/wp-content/uploads/2018/05/word-image-3228.png" class="wp-image-3639" srcset="/wp-content/uploads/2018/05/word-image-3228.png 789w, /wp-content/uploads/2018/05/word-image-3228-300x208.png 300w, /wp-content/uploads/2018/05/word-image-3228-768x531.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></p>
<p>
  ③修改authz文件
</p>
<p><img loading="lazy" decoding="async" width="1034" height="665" src="/wp-content/uploads/2018/05/word-image-3229.png" class="wp-image-3640" srcset="/wp-content/uploads/2018/05/word-image-3229.png 1034w, /wp-content/uploads/2018/05/word-image-3229-300x193.png 300w, /wp-content/uploads/2018/05/word-image-3229-768x494.png 768w, /wp-content/uploads/2018/05/word-image-3229-1024x659.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" /></p>
<p>
  ④重新启动服务
</p>
<p><img loading="lazy" decoding="async" width="508" height="158" src="/wp-content/uploads/2018/05/word-image-3230.png" class="wp-image-3641" srcset="/wp-content/uploads/2018/05/word-image-3230.png 508w, /wp-content/uploads/2018/05/word-image-3230-300x93.png 300w" sizes="(max-width: 508px) 100vw, 508px" /></p>
<h3>5.8.2、测试使用</h3>
<p>
  ①新建立一个目录
</p>
<p><img loading="lazy" decoding="async" width="817" height="238" src="/wp-content/uploads/2018/05/word-image-3231.png" class="wp-image-3642" srcset="/wp-content/uploads/2018/05/word-image-3231.png 817w, /wp-content/uploads/2018/05/word-image-3231-300x87.png 300w, /wp-content/uploads/2018/05/word-image-3231-768x224.png 768w" sizes="(max-width: 817px) 100vw, 817px" /></p>
<p>
  ②svn检出
</p>
<p><img loading="lazy" decoding="async" width="448" height="383" src="/wp-content/uploads/2018/05/word-image-3232.png" class="wp-image-3643" srcset="/wp-content/uploads/2018/05/word-image-3232.png 448w, /wp-content/uploads/2018/05/word-image-3232-300x256.png 300w" sizes="(max-width: 448px) 100vw, 448px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="666" height="385" src="/wp-content/uploads/2018/05/word-image-3233.png" class="wp-image-3644" srcset="/wp-content/uploads/2018/05/word-image-3233.png 666w, /wp-content/uploads/2018/05/word-image-3233-300x173.png 300w" sizes="(max-width: 666px) 100vw, 666px" /></p>
<p>
  ③增加代码然后提交
</p>
<p>
  先加入文件
</p>
<p><img loading="lazy" decoding="async" width="849" height="331" src="/wp-content/uploads/2018/05/word-image-3234.png" class="wp-image-3645" srcset="/wp-content/uploads/2018/05/word-image-3234.png 849w, /wp-content/uploads/2018/05/word-image-3234-300x117.png 300w, /wp-content/uploads/2018/05/word-image-3234-768x299.png 768w" sizes="(max-width: 849px) 100vw, 849px" /></p>
<p>
  在svn提交文件
</p>
<p><img loading="lazy" decoding="async" width="603" height="499" src="/wp-content/uploads/2018/05/word-image-3235.png" class="wp-image-3646" srcset="/wp-content/uploads/2018/05/word-image-3235.png 603w, /wp-content/uploads/2018/05/word-image-3235-300x248.png 300w" sizes="(max-width: 603px) 100vw, 603px" /></p>
<p>
  输入一个没有权限的用户密码之后提交结果如下
</p>
<p><img loading="lazy" decoding="async" width="645" height="292" src="/wp-content/uploads/2018/05/word-image-3236.png" class="wp-image-3647" srcset="/wp-content/uploads/2018/05/word-image-3236.png 645w, /wp-content/uploads/2018/05/word-image-3236-300x136.png 300w" sizes="(max-width: 645px) 100vw, 645px" /></p>
<p>
  再次重新提交文件使用有权限
</p>
<p><img loading="lazy" decoding="async" width="636" height="293" src="/wp-content/uploads/2018/05/word-image-3237.png" class="wp-image-3648" srcset="/wp-content/uploads/2018/05/word-image-3237.png 636w, /wp-content/uploads/2018/05/word-image-3237-300x138.png 300w" sizes="(max-width: 636px) 100vw, 636px" /></p>
<h1>svn设置为系统服务</h1>
<p>
  目前svn服务端每次都要保证cmd处于挂起状态才能给正常的提供服务。如果cmd一旦关闭 svn服务也就关闭比较麻烦。可以将svn加入到计算机的系统服务中并且设置为自动启动
</p>
<h2>6.1、svn设置为系统服务</h2>
<p>
  ①以超级管理员的身份启动cmd
</p>
<p><img loading="lazy" decoding="async" width="389" height="573" src="/wp-content/uploads/2018/05/word-image-3238.png" class="wp-image-3649" srcset="/wp-content/uploads/2018/05/word-image-3238.png 389w, /wp-content/uploads/2018/05/word-image-3238-204x300.png 204w" sizes="(max-width: 389px) 100vw, 389px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="815" height="200" src="/wp-content/uploads/2018/05/word-image-3239.png" class="wp-image-3650" srcset="/wp-content/uploads/2018/05/word-image-3239.png 815w, /wp-content/uploads/2018/05/word-image-3239-300x74.png 300w, /wp-content/uploads/2018/05/word-image-3239-768x188.png 768w" sizes="(max-width: 815px) 100vw, 815px" /></p>
<p>
  ②使用命令设置服务
</p>
<p><img loading="lazy" decoding="async" width="1060" height="278" src="/wp-content/uploads/2018/05/word-image-3240.png" class="wp-image-3651" srcset="/wp-content/uploads/2018/05/word-image-3240.png 1060w, /wp-content/uploads/2018/05/word-image-3240-300x79.png 300w, /wp-content/uploads/2018/05/word-image-3240-768x201.png 768w, /wp-content/uploads/2018/05/word-image-3240-1024x269.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<h2>6.2、svn启动服务</h2>
<p>
  方式一：直接找到服务启动
</p>
<p><img loading="lazy" decoding="async" width="1183" height="624" src="/wp-content/uploads/2018/05/word-image-3241.png" class="wp-image-3652" srcset="/wp-content/uploads/2018/05/word-image-3241.png 1183w, /wp-content/uploads/2018/05/word-image-3241-300x158.png 300w, /wp-content/uploads/2018/05/word-image-3241-768x405.png 768w, /wp-content/uploads/2018/05/word-image-3241-1024x540.png 1024w" sizes="(max-width: 1183px) 100vw, 1183px" /><br />
<img loading="lazy" decoding="async" width="990" height="443" src="/wp-content/uploads/2018/05/word-image-3242.png" class="wp-image-3653" srcset="/wp-content/uploads/2018/05/word-image-3242.png 990w, /wp-content/uploads/2018/05/word-image-3242-300x134.png 300w, /wp-content/uploads/2018/05/word-image-3242-768x344.png 768w" sizes="(max-width: 990px) 100vw, 990px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="943" height="246" src="/wp-content/uploads/2018/05/word-image-3243.png" class="wp-image-3654" srcset="/wp-content/uploads/2018/05/word-image-3243.png 943w, /wp-content/uploads/2018/05/word-image-3243-300x78.png 300w, /wp-content/uploads/2018/05/word-image-3243-768x200.png 768w" sizes="(max-width: 943px) 100vw, 943px" /></p>
<p>
  方式二：通过使用命令
</p>
<p><img loading="lazy" decoding="async" width="870" height="266" src="/wp-content/uploads/2018/05/word-image-3244.png" class="wp-image-3655" srcset="/wp-content/uploads/2018/05/word-image-3244.png 870w, /wp-content/uploads/2018/05/word-image-3244-300x92.png 300w, /wp-content/uploads/2018/05/word-image-3244-768x235.png 768w" sizes="(max-width: 870px) 100vw, 870px" /></p>
<h2>6.3、svn服务的卸载</h2>
<p><img loading="lazy" decoding="async" width="826" height="180" src="/wp-content/uploads/2018/05/word-image-3245.png" class="wp-image-3656" srcset="/wp-content/uploads/2018/05/word-image-3245.png 826w, /wp-content/uploads/2018/05/word-image-3245-300x65.png 300w, /wp-content/uploads/2018/05/word-image-3245-768x167.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></p>
<h1>Git概述(扩展)</h1>
<h2>7.1、Git介绍</h2>
<p>
  Git是一个分布式的版本控制软件。能够帮助管理项目的代码
</p>
<h2>7.2、版本控制软件中的集中式与分布式区别</h2>
<p>
  ①svn的集中式
</p>
<p><img loading="lazy" decoding="async" width="972" height="471" src="/wp-content/uploads/2018/05/word-image-3246.png" class="wp-image-3657" srcset="/wp-content/uploads/2018/05/word-image-3246.png 972w, /wp-content/uploads/2018/05/word-image-3246-300x145.png 300w, /wp-content/uploads/2018/05/word-image-3246-768x372.png 768w" sizes="(max-width: 972px) 100vw, 972px" /></p>
<p>
  ②git的分布式
</p>
<p><img loading="lazy" decoding="async" width="1109" height="509" src="/wp-content/uploads/2018/05/word-image-3247.png" class="wp-image-3658" srcset="/wp-content/uploads/2018/05/word-image-3247.png 1109w, /wp-content/uploads/2018/05/word-image-3247-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3247-768x352.png 768w, /wp-content/uploads/2018/05/word-image-3247-1024x470.png 1024w" sizes="(max-width: 1109px) 100vw, 1109px" /></p>
<h2>7.3、安装git软件</h2>
<p>
  一路下一步即可
</p>
<p>
  安装完成之后如下
</p>
<p><img loading="lazy" decoding="async" width="566" height="442" src="/wp-content/uploads/2018/05/word-image-3248.png" class="wp-image-3659" srcset="/wp-content/uploads/2018/05/word-image-3248.png 566w, /wp-content/uploads/2018/05/word-image-3248-300x234.png 300w" sizes="(max-width: 566px) 100vw, 566px" /></p>
<h2>7.4、git使用流程</h2>
<p><img loading="lazy" decoding="async" width="789" height="461" src="/wp-content/uploads/2018/05/word-image-3249.png" class="wp-image-3660" srcset="/wp-content/uploads/2018/05/word-image-3249.png 789w, /wp-content/uploads/2018/05/word-image-3249-300x175.png 300w, /wp-content/uploads/2018/05/word-image-3249-768x449.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></p>
<h1>git基本使用</h1>
<p>
  ①新建git目录
</p>
<p><img loading="lazy" decoding="async" width="870" height="317" src="/wp-content/uploads/2018/05/word-image-3250.png" class="wp-image-3661" srcset="/wp-content/uploads/2018/05/word-image-3250.png 870w, /wp-content/uploads/2018/05/word-image-3250-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3250-768x280.png 768w" sizes="(max-width: 870px) 100vw, 870px" /></p>
<p>
  ②进入目录使用git
</p>
<p><img loading="lazy" decoding="async" width="895" height="559" src="/wp-content/uploads/2018/05/word-image-3251.png" class="wp-image-3662" srcset="/wp-content/uploads/2018/05/word-image-3251.png 895w, /wp-content/uploads/2018/05/word-image-3251-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3251-768x480.png 768w" sizes="(max-width: 895px) 100vw, 895px" /></p>
<p>
  ③初始化用户信息（此步骤可以值设置一次）
</p>
<p>
  git config &#8211;globle user.name ‘用户名’
</p>
<p>
  git config &#8211;globle user.email ‘邮箱’
</p>
<p><img loading="lazy" decoding="async" width="899" height="411" src="/wp-content/uploads/2018/05/word-image-3252.png" class="wp-image-3663" srcset="/wp-content/uploads/2018/05/word-image-3252.png 899w, /wp-content/uploads/2018/05/word-image-3252-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3252-768x351.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>
  ④使用命令初始化创库
</p>
<p><img loading="lazy" decoding="async" width="945" height="176" src="/wp-content/uploads/2018/05/word-image-3253.png" class="wp-image-3664" srcset="/wp-content/uploads/2018/05/word-image-3253.png 945w, /wp-content/uploads/2018/05/word-image-3253-300x56.png 300w, /wp-content/uploads/2018/05/word-image-3253-768x143.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></p>
<p>
  查看目录下的结果
</p>
<p><img loading="lazy" decoding="async" width="724" height="193" src="/wp-content/uploads/2018/05/word-image-3254.png" class="wp-image-3665" srcset="/wp-content/uploads/2018/05/word-image-3254.png 724w, /wp-content/uploads/2018/05/word-image-3254-300x80.png 300w" sizes="(max-width: 724px) 100vw, 724px" /></p>
<p>
  ⑤开始开发创建文件
</p>
<p><img loading="lazy" decoding="async" width="796" height="235" src="/wp-content/uploads/2018/05/word-image-3255.png" class="wp-image-3666" srcset="/wp-content/uploads/2018/05/word-image-3255.png 796w, /wp-content/uploads/2018/05/word-image-3255-300x89.png 300w, /wp-content/uploads/2018/05/word-image-3255-768x227.png 768w" sizes="(max-width: 796px) 100vw, 796px" /></p>
<p>
  ⑥增加代码到暂存区
</p>
<p><img loading="lazy" decoding="async" width="821" height="170" src="/wp-content/uploads/2018/05/word-image-3256.png" class="wp-image-3667" srcset="/wp-content/uploads/2018/05/word-image-3256.png 821w, /wp-content/uploads/2018/05/word-image-3256-300x62.png 300w, /wp-content/uploads/2018/05/word-image-3256-768x159.png 768w" sizes="(max-width: 821px) 100vw, 821px" /></p>
<p>
  ⑦提交代码到仓库
</p>
<p><img loading="lazy" decoding="async" width="954" height="251" src="/wp-content/uploads/2018/05/word-image-3257.png" class="wp-image-3668" srcset="/wp-content/uploads/2018/05/word-image-3257.png 954w, /wp-content/uploads/2018/05/word-image-3257-300x79.png 300w, /wp-content/uploads/2018/05/word-image-3257-768x202.png 768w" sizes="(max-width: 954px) 100vw, 954px" /></p>
<h1>git还原</h1>
<p>
  ①增加测试文件second.php
</p>
<p><img loading="lazy" decoding="async" width="738" height="130" src="/wp-content/uploads/2018/05/word-image-3258.png" class="wp-image-3669" srcset="/wp-content/uploads/2018/05/word-image-3258.png 738w, /wp-content/uploads/2018/05/word-image-3258-300x53.png 300w" sizes="(max-width: 738px) 100vw, 738px" /></p>
<p>
  ②增加到暂存区
</p>
<p><img loading="lazy" decoding="async" width="798" height="141" src="/wp-content/uploads/2018/05/word-image-3259.png" class="wp-image-3670" srcset="/wp-content/uploads/2018/05/word-image-3259.png 798w, /wp-content/uploads/2018/05/word-image-3259-300x53.png 300w, /wp-content/uploads/2018/05/word-image-3259-768x136.png 768w" sizes="(max-width: 798px) 100vw, 798px" /></p>
<p>
  ③提交仓库
</p>
<p><img loading="lazy" decoding="async" width="860" height="233" src="/wp-content/uploads/2018/05/word-image-3260.png" class="wp-image-3671" srcset="/wp-content/uploads/2018/05/word-image-3260.png 860w, /wp-content/uploads/2018/05/word-image-3260-300x81.png 300w, /wp-content/uploads/2018/05/word-image-3260-768x208.png 768w" sizes="(max-width: 860px) 100vw, 860px" /></p>
<p>
  ④再次增加测试文件并且提交
</p>
<p><img loading="lazy" decoding="async" width="738" height="155" src="/wp-content/uploads/2018/05/word-image-3261.png" class="wp-image-3672" srcset="/wp-content/uploads/2018/05/word-image-3261.png 738w, /wp-content/uploads/2018/05/word-image-3261-300x63.png 300w" sizes="(max-width: 738px) 100vw, 738px" /><br />
<img loading="lazy" decoding="async" width="876" height="289" src="/wp-content/uploads/2018/05/word-image-3262.png" class="wp-image-3673" srcset="/wp-content/uploads/2018/05/word-image-3262.png 876w, /wp-content/uploads/2018/05/word-image-3262-300x99.png 300w, /wp-content/uploads/2018/05/word-image-3262-768x253.png 768w" sizes="(max-width: 876px) 100vw, 876px" /></p>
<p>
  ⑤再次增加测试文件并且提交
</p>
<p><img loading="lazy" decoding="async" width="705" height="177" src="/wp-content/uploads/2018/05/word-image-3263.png" class="wp-image-3674" srcset="/wp-content/uploads/2018/05/word-image-3263.png 705w, /wp-content/uploads/2018/05/word-image-3263-300x75.png 300w" sizes="(max-width: 705px) 100vw, 705px" /><br />
<img loading="lazy" decoding="async" width="837" height="289" src="/wp-content/uploads/2018/05/word-image-3264.png" class="wp-image-3675" srcset="/wp-content/uploads/2018/05/word-image-3264.png 837w, /wp-content/uploads/2018/05/word-image-3264-300x104.png 300w, /wp-content/uploads/2018/05/word-image-3264-768x265.png 768w" sizes="(max-width: 837px) 100vw, 837px" /></p>
<p>
  ⑥查看版本
</p>
<p><img loading="lazy" decoding="async" width="888" height="359" src="/wp-content/uploads/2018/05/word-image-3265.png" class="wp-image-3676" srcset="/wp-content/uploads/2018/05/word-image-3265.png 888w, /wp-content/uploads/2018/05/word-image-3265-300x121.png 300w, /wp-content/uploads/2018/05/word-image-3265-768x310.png 768w" sizes="(max-width: 888px) 100vw, 888px" /></p>
<p>
  ⑦使用head更新
</p>
<p><img loading="lazy" decoding="async" width="912" height="311" src="/wp-content/uploads/2018/05/word-image-3266.png" class="wp-image-3677" srcset="/wp-content/uploads/2018/05/word-image-3266.png 912w, /wp-content/uploads/2018/05/word-image-3266-300x102.png 300w, /wp-content/uploads/2018/05/word-image-3266-768x262.png 768w" sizes="(max-width: 912px) 100vw, 912px" /></p>
<p>
  更新到上上个版本
</p>
<p><img loading="lazy" decoding="async" width="846" height="415" src="/wp-content/uploads/2018/05/word-image-3267.png" class="wp-image-3678" srcset="/wp-content/uploads/2018/05/word-image-3267.png 846w, /wp-content/uploads/2018/05/word-image-3267-300x147.png 300w, /wp-content/uploads/2018/05/word-image-3267-768x377.png 768w" sizes="(max-width: 846px) 100vw, 846px" /></p>
<p>
  可以查看结果
</p>
<p><img loading="lazy" decoding="async" width="805" height="187" src="/wp-content/uploads/2018/05/word-image-3268.png" class="wp-image-3679" srcset="/wp-content/uploads/2018/05/word-image-3268.png 805w, /wp-content/uploads/2018/05/word-image-3268-300x70.png 300w, /wp-content/uploads/2018/05/word-image-3268-768x178.png 768w" sizes="(max-width: 805px) 100vw, 805px" /></p>
<h1>Git与github</h1>
<h2>10.1、git与GitHub的关系</h2>
<p>
  Git不等价于github
</p>
<p>
  Git是版本控制软件
</p>
<p>
  Github是基于git基础上提供的一个代码的托管平台(可以将代码推送给github或者从GitHub上下载最新的代码)
</p>
<p>
  在国内使用比较多的用码云(跟github一模一样)
</p>
<h2>10.2、码云使用</h2>
<p>
  ①注册账号
</p>
<p>
  ②登录
</p>
<p>
  ③创建项目
</p>
<p><img loading="lazy" decoding="async" width="1079" height="136" src="/wp-content/uploads/2018/05/word-image-3269.png" class="wp-image-3680" srcset="/wp-content/uploads/2018/05/word-image-3269.png 1079w, /wp-content/uploads/2018/05/word-image-3269-300x38.png 300w, /wp-content/uploads/2018/05/word-image-3269-768x97.png 768w, /wp-content/uploads/2018/05/word-image-3269-1024x129.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /></p>
<p>
  填写表单提交即可
</p>
<p><img loading="lazy" decoding="async" width="801" height="600" src="/wp-content/uploads/2018/05/word-image-3270.png" class="wp-image-3681" srcset="/wp-content/uploads/2018/05/word-image-3270.png 801w, /wp-content/uploads/2018/05/word-image-3270-300x225.png 300w, /wp-content/uploads/2018/05/word-image-3270-768x575.png 768w" sizes="(max-width: 801px) 100vw, 801px" /></p>
<p>
  ④查看地址
</p>
<p><img loading="lazy" decoding="async" width="1174" height="328" src="/wp-content/uploads/2018/05/word-image-3271.png" class="wp-image-3682" srcset="/wp-content/uploads/2018/05/word-image-3271.png 1174w, /wp-content/uploads/2018/05/word-image-3271-300x84.png 300w, /wp-content/uploads/2018/05/word-image-3271-768x215.png 768w, /wp-content/uploads/2018/05/word-image-3271-1024x286.png 1024w" sizes="(max-width: 1174px) 100vw, 1174px" /></p>
<p>
  ⑤获取线上的代码
</p>
<p><img loading="lazy" decoding="async" width="881" height="396" src="/wp-content/uploads/2018/05/word-image-3272.png" class="wp-image-3683" srcset="/wp-content/uploads/2018/05/word-image-3272.png 881w, /wp-content/uploads/2018/05/word-image-3272-300x135.png 300w, /wp-content/uploads/2018/05/word-image-3272-768x345.png 768w" sizes="(max-width: 881px) 100vw, 881px" /></p>
<p>
  ⑥创建文件
</p>
<p><img loading="lazy" decoding="async" width="730" height="317" src="/wp-content/uploads/2018/05/word-image-3273.png" class="wp-image-3684" srcset="/wp-content/uploads/2018/05/word-image-3273.png 730w, /wp-content/uploads/2018/05/word-image-3273-300x130.png 300w" sizes="(max-width: 730px) 100vw, 730px" /></p>
<p>
  ⑦增加代码到暂存区然后提交
</p>
<p><img loading="lazy" decoding="async" width="893" height="325" src="/wp-content/uploads/2018/05/word-image-3274.png" class="wp-image-3685" srcset="/wp-content/uploads/2018/05/word-image-3274.png 893w, /wp-content/uploads/2018/05/word-image-3274-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3274-768x280.png 768w" sizes="(max-width: 893px) 100vw, 893px" /></p>
<p>
  ⑧推送代码给码云
</p>
<p><img loading="lazy" decoding="async" width="935" height="300" src="/wp-content/uploads/2018/05/word-image-3275.png" class="wp-image-3686" srcset="/wp-content/uploads/2018/05/word-image-3275.png 935w, /wp-content/uploads/2018/05/word-image-3275-300x96.png 300w, /wp-content/uploads/2018/05/word-image-3275-768x246.png 768w" sizes="(max-width: 935px) 100vw, 935px" /><br />
<img loading="lazy" decoding="async" width="381" height="190" src="/wp-content/uploads/2018/05/word-image-3276.png" class="wp-image-3687" srcset="/wp-content/uploads/2018/05/word-image-3276.png 381w, /wp-content/uploads/2018/05/word-image-3276-300x150.png 300w" sizes="(max-width: 381px) 100vw, 381px" /></p>
<p>
  在推送的过程中需要自己的有权限。如果推送的项目没有把自己的账户加入为开发者是不能正常推送的
</p>
<h1>git中的分支</h1>
<p>
  ①创建分支
</p>
<p><img loading="lazy" decoding="async" width="897" height="373" src="/wp-content/uploads/2018/05/word-image-3277.png" class="wp-image-3688" srcset="/wp-content/uploads/2018/05/word-image-3277.png 897w, /wp-content/uploads/2018/05/word-image-3277-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3277-768x319.png 768w" sizes="(max-width: 897px) 100vw, 897px" /></p>
<p>
  ②切换分支
</p>
<p><img loading="lazy" decoding="async" width="837" height="189" src="/wp-content/uploads/2018/05/word-image-3278.png" class="wp-image-3689" srcset="/wp-content/uploads/2018/05/word-image-3278.png 837w, /wp-content/uploads/2018/05/word-image-3278-300x68.png 300w, /wp-content/uploads/2018/05/word-image-3278-768x173.png 768w" sizes="(max-width: 837px) 100vw, 837px" /></p>
<p>
  ③在分支下创建文件
</p>
<p><img loading="lazy" decoding="async" width="898" height="224" src="/wp-content/uploads/2018/05/word-image-3279.png" class="wp-image-3690" srcset="/wp-content/uploads/2018/05/word-image-3279.png 898w, /wp-content/uploads/2018/05/word-image-3279-300x75.png 300w, /wp-content/uploads/2018/05/word-image-3279-768x192.png 768w" sizes="(max-width: 898px) 100vw, 898px" /></p>
<p>
  ④分支中提交代码
</p>
<p><img loading="lazy" decoding="async" width="886" height="453" src="/wp-content/uploads/2018/05/word-image-3280.png" class="wp-image-3691" srcset="/wp-content/uploads/2018/05/word-image-3280.png 886w, /wp-content/uploads/2018/05/word-image-3280-300x153.png 300w, /wp-content/uploads/2018/05/word-image-3280-768x393.png 768w" sizes="(max-width: 886px) 100vw, 886px" /></p>
<p>
  ⑤切换到主分支
</p>
<p><img loading="lazy" decoding="async" width="901" height="318" src="/wp-content/uploads/2018/05/word-image-3281.png" class="wp-image-3692" srcset="/wp-content/uploads/2018/05/word-image-3281.png 901w, /wp-content/uploads/2018/05/word-image-3281-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3281-768x271.png 768w" sizes="(max-width: 901px) 100vw, 901px" /></p>
<p>
  ⑥分支的合并
</p>
<p><img loading="lazy" decoding="async" width="920" height="425" src="/wp-content/uploads/2018/05/word-image-3282.png" class="wp-image-3693" srcset="/wp-content/uploads/2018/05/word-image-3282.png 920w, /wp-content/uploads/2018/05/word-image-3282-300x139.png 300w, /wp-content/uploads/2018/05/word-image-3282-768x355.png 768w" sizes="(max-width: 920px) 100vw, 920px" /></p>
<p>
  合并过程中有冲突手动解决冲突问题
</p>
<p>
  备注：
</p>
<p>
  软件提供服务。一直会存在一个进程在长期执行对于此进程就叫守护进程</p>
]]></content:encoded>
					
					<wfw:commentRss>/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/3551.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GitHub（一） 配置、使用</title>
		<link>/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/3478.html</link>
					<comments>/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/3478.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 10:02:19 +0000</pubDate>
				<category><![CDATA[GIT]]></category>
		<category><![CDATA[版本控制]]></category>
		<category><![CDATA[Github]]></category>
		<category><![CDATA[使用]]></category>
		<category><![CDATA[配置]]></category>
		<guid isPermaLink="false">/?p=3478</guid>

					<description><![CDATA[一、了解Git和Github 1、什么是Git Git是一个免费、开源的版本控制软件 问：什么是版本控制软件  [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>一、了解Git和Github</h1>
<h2>1、什么是Git</h2>
<p>Git是一个免费、开源的版本控制软件</p>
<p>问：什么是版本控制软件</p>
<p>答：版本控制是一种记录一个或若干个文件内容变化，以便将来查阅特定版本修订情况得系统。</p>
<h2>2、什么是Github</h2>
<p>Github是全球最大的社交编程及代码托管网站（https://github.com/）</p>
<h2>3、Github和Git是什么关系</h2>
<p>Git是版本控制软件</p>
<p>Github是项目代码托管的平台，借助git来管理项目代码</p>
<h2>4、为什么学习Github</h2>
<ul>
<li>学习优秀的开源项目</li>
<li>关注行业前辈了解最新的行业动态</li>
<li>如：</li>
<li>PHP 鸟哥，现任链家网技术副总裁兼总架构师 https://github.com/laruence</li>
<li>国内流行的PHP开发框架（thinkphp）：https://github.com/top-think/think</li>
<li>全球流行的PHP框架（laravel）：https://github.com/laravel/laravel</li>
<li>PHP编码规范（FIG-PHP）：https://www.gitbook.com/book/jifei/php-fig-standards/details</li>
</ul>
<h1>二、使用Github</h1>
<h2>1、目的</h2>
<ul>
<li>借助github托管项目代码</li>
<li>借助github托管composer软件包</li>
</ul>
<h2>2、注册github账号</h2>
<p><img loading="lazy" decoding="async" width="1234" height="601" class="wp-image-3479" src="/wp-content/uploads/2018/05/word-image-3072.png" srcset="/wp-content/uploads/2018/05/word-image-3072.png 1234w, /wp-content/uploads/2018/05/word-image-3072-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3072-768x374.png 768w, /wp-content/uploads/2018/05/word-image-3072-1024x499.png 1024w" sizes="(max-width: 1234px) 100vw, 1234px" /><br />
<img loading="lazy" decoding="async" width="859" height="680" class="wp-image-3480" src="/wp-content/uploads/2018/05/word-image-3073.png" srcset="/wp-content/uploads/2018/05/word-image-3073.png 859w, /wp-content/uploads/2018/05/word-image-3073-300x237.png 300w, /wp-content/uploads/2018/05/word-image-3073-768x608.png 768w" sizes="(max-width: 859px) 100vw, 859px" /><br />
<img loading="lazy" decoding="async" width="730" height="500" class="wp-image-3481" src="/wp-content/uploads/2018/05/word-image-3074.png" srcset="/wp-content/uploads/2018/05/word-image-3074.png 730w, /wp-content/uploads/2018/05/word-image-3074-300x205.png 300w, /wp-content/uploads/2018/05/word-image-3074-220x150.png 220w" sizes="(max-width: 730px) 100vw, 730px" /><br />
<img loading="lazy" decoding="async" width="758" height="522" class="wp-image-3483" src="/wp-content/uploads/2018/05/word-image-3075.png" srcset="/wp-content/uploads/2018/05/word-image-3075.png 758w, /wp-content/uploads/2018/05/word-image-3075-300x207.png 300w" sizes="(max-width: 758px) 100vw, 758px" /><br />
<img loading="lazy" decoding="async" width="1011" height="590" class="wp-image-3484" src="/wp-content/uploads/2018/05/word-image-3076.png" srcset="/wp-content/uploads/2018/05/word-image-3076.png 1011w, /wp-content/uploads/2018/05/word-image-3076-300x175.png 300w, /wp-content/uploads/2018/05/word-image-3076-768x448.png 768w" sizes="(max-width: 1011px) 100vw, 1011px" /></p>
<h2>3、创建仓库</h2>
<h3>1）说明</h3>
<ul>
<li>一个github仓库存放一个项目</li>
<li>一般使用git软件管理github仓库</li>
</ul>
<h3>2）创建仓库</h3>
<p><img loading="lazy" decoding="async" width="1120" height="562" class="wp-image-3485" src="/wp-content/uploads/2018/05/word-image-3077.png" srcset="/wp-content/uploads/2018/05/word-image-3077.png 1120w, /wp-content/uploads/2018/05/word-image-3077-300x151.png 300w, /wp-content/uploads/2018/05/word-image-3077-768x385.png 768w, /wp-content/uploads/2018/05/word-image-3077-1024x514.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /><br />
<img loading="lazy" decoding="async" width="893" height="607" class="wp-image-3486" src="/wp-content/uploads/2018/05/word-image-3078.png" srcset="/wp-content/uploads/2018/05/word-image-3078.png 893w, /wp-content/uploads/2018/05/word-image-3078-300x204.png 300w, /wp-content/uploads/2018/05/word-image-3078-768x522.png 768w, /wp-content/uploads/2018/05/word-image-3078-220x150.png 220w" sizes="(max-width: 893px) 100vw, 893px" /><br />
<img loading="lazy" decoding="async" width="969" height="587" class="wp-image-3487" src="/wp-content/uploads/2018/05/word-image-3079.png" srcset="/wp-content/uploads/2018/05/word-image-3079.png 969w, /wp-content/uploads/2018/05/word-image-3079-300x182.png 300w, /wp-content/uploads/2018/05/word-image-3079-768x465.png 768w" sizes="(max-width: 969px) 100vw, 969px" /></p>
<p>脚下留心</p>
<p><img loading="lazy" decoding="async" width="802" height="478" class="wp-image-3488" src="/wp-content/uploads/2018/05/word-image-3080.png" srcset="/wp-content/uploads/2018/05/word-image-3080.png 802w, /wp-content/uploads/2018/05/word-image-3080-300x179.png 300w, /wp-content/uploads/2018/05/word-image-3080-768x458.png 768w" sizes="(max-width: 802px) 100vw, 802px" /><br />
<img loading="lazy" decoding="async" width="757" height="390" class="wp-image-3489" src="/wp-content/uploads/2018/05/word-image-3081.png" srcset="/wp-content/uploads/2018/05/word-image-3081.png 757w, /wp-content/uploads/2018/05/word-image-3081-300x155.png 300w" sizes="(max-width: 757px) 100vw, 757px" /></p>
<h2>仓库管理</h2>
<h3>︴仓库主页说明【★★★★★★★★★★★★★★】</h3>
<p><img loading="lazy" decoding="async" width="999" height="631" class="wp-image-3490" src="/wp-content/uploads/2018/05/word-image-3082.png" srcset="/wp-content/uploads/2018/05/word-image-3082.png 999w, /wp-content/uploads/2018/05/word-image-3082-300x189.png 300w, /wp-content/uploads/2018/05/word-image-3082-768x485.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></p>
<h3>1）新建文件</h3>
<p><img loading="lazy" decoding="async" width="946" height="443" class="wp-image-3491" src="/wp-content/uploads/2018/05/word-image-3083.png" srcset="/wp-content/uploads/2018/05/word-image-3083.png 946w, /wp-content/uploads/2018/05/word-image-3083-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3083-768x360.png 768w" sizes="(max-width: 946px) 100vw, 946px" /><br />
<img loading="lazy" decoding="async" width="664" height="608" class="wp-image-3492" src="/wp-content/uploads/2018/05/word-image-3084.png" srcset="/wp-content/uploads/2018/05/word-image-3084.png 664w, /wp-content/uploads/2018/05/word-image-3084-300x275.png 300w" sizes="(max-width: 664px) 100vw, 664px" /><br />
<img loading="lazy" decoding="async" width="795" height="398" class="wp-image-3493" src="/wp-content/uploads/2018/05/word-image-3085.png" srcset="/wp-content/uploads/2018/05/word-image-3085.png 795w, /wp-content/uploads/2018/05/word-image-3085-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3085-768x384.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></p>
<h3>2）编辑文件</h3>
<p><img loading="lazy" decoding="async" width="826" height="407" class="wp-image-3494" src="/wp-content/uploads/2018/05/word-image-3086.png" srcset="/wp-content/uploads/2018/05/word-image-3086.png 826w, /wp-content/uploads/2018/05/word-image-3086-300x148.png 300w, /wp-content/uploads/2018/05/word-image-3086-768x378.png 768w" sizes="(max-width: 826px) 100vw, 826px" /><br />
<img loading="lazy" decoding="async" width="860" height="477" class="wp-image-3495" src="/wp-content/uploads/2018/05/word-image-3087.png" srcset="/wp-content/uploads/2018/05/word-image-3087.png 860w, /wp-content/uploads/2018/05/word-image-3087-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3087-768x426.png 768w" sizes="(max-width: 860px) 100vw, 860px" /><br />
<img loading="lazy" decoding="async" width="480" height="506" class="wp-image-3496" src="/wp-content/uploads/2018/05/word-image-3088.png" srcset="/wp-content/uploads/2018/05/word-image-3088.png 480w, /wp-content/uploads/2018/05/word-image-3088-285x300.png 285w" sizes="(max-width: 480px) 100vw, 480px" /><br />
<img loading="lazy" decoding="async" width="923" height="497" class="wp-image-3497" src="/wp-content/uploads/2018/05/word-image-3089.png" srcset="/wp-content/uploads/2018/05/word-image-3089.png 923w, /wp-content/uploads/2018/05/word-image-3089-300x162.png 300w, /wp-content/uploads/2018/05/word-image-3089-768x414.png 768w" sizes="(max-width: 923px) 100vw, 923px" /></p>
<h3>3）删除文件</h3>
<p><img loading="lazy" decoding="async" width="550" height="314" class="wp-image-3498" src="/wp-content/uploads/2018/05/word-image-3090.png" srcset="/wp-content/uploads/2018/05/word-image-3090.png 550w, /wp-content/uploads/2018/05/word-image-3090-300x171.png 300w" sizes="(max-width: 550px) 100vw, 550px" /><br />
<img loading="lazy" decoding="async" width="1014" height="394" class="wp-image-3499" src="/wp-content/uploads/2018/05/word-image-3091.png" srcset="/wp-content/uploads/2018/05/word-image-3091.png 1014w, /wp-content/uploads/2018/05/word-image-3091-300x117.png 300w, /wp-content/uploads/2018/05/word-image-3091-768x298.png 768w" sizes="(max-width: 1014px) 100vw, 1014px" /><br />
<img loading="lazy" decoding="async" width="884" height="603" class="wp-image-3500" src="/wp-content/uploads/2018/05/word-image-3092.png" srcset="/wp-content/uploads/2018/05/word-image-3092.png 884w, /wp-content/uploads/2018/05/word-image-3092-300x205.png 300w, /wp-content/uploads/2018/05/word-image-3092-768x524.png 768w, /wp-content/uploads/2018/05/word-image-3092-220x150.png 220w" sizes="(max-width: 884px) 100vw, 884px" /></p>
<p>︴思考被删除文件如何查看信息</p>
<p>答：通过点击仓库主页的commits</p>
<p><img loading="lazy" decoding="async" width="549" height="407" class="wp-image-3501" src="/wp-content/uploads/2018/05/word-image-3093.png" srcset="/wp-content/uploads/2018/05/word-image-3093.png 549w, /wp-content/uploads/2018/05/word-image-3093-300x222.png 300w" sizes="(max-width: 549px) 100vw, 549px" /><br />
<img loading="lazy" decoding="async" width="980" height="459" class="wp-image-3502" src="/wp-content/uploads/2018/05/word-image-3094.png" srcset="/wp-content/uploads/2018/05/word-image-3094.png 980w, /wp-content/uploads/2018/05/word-image-3094-300x141.png 300w, /wp-content/uploads/2018/05/word-image-3094-768x360.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></p>
<h3>4）上传文件</h3>
<p><img loading="lazy" decoding="async" width="996" height="575" class="wp-image-3503" src="/wp-content/uploads/2018/05/word-image-3095.png" srcset="/wp-content/uploads/2018/05/word-image-3095.png 996w, /wp-content/uploads/2018/05/word-image-3095-300x173.png 300w, /wp-content/uploads/2018/05/word-image-3095-768x443.png 768w" sizes="(max-width: 996px) 100vw, 996px" /><br />
<img loading="lazy" decoding="async" width="906" height="585" class="wp-image-3504" src="/wp-content/uploads/2018/05/word-image-3096.png" srcset="/wp-content/uploads/2018/05/word-image-3096.png 906w, /wp-content/uploads/2018/05/word-image-3096-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3096-768x496.png 768w" sizes="(max-width: 906px) 100vw, 906px" /><br />
<img loading="lazy" decoding="async" width="977" height="576" class="wp-image-3505" src="/wp-content/uploads/2018/05/word-image-3097.png" srcset="/wp-content/uploads/2018/05/word-image-3097.png 977w, /wp-content/uploads/2018/05/word-image-3097-300x177.png 300w, /wp-content/uploads/2018/05/word-image-3097-768x453.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<h3>5）下载/检出项目</h3>
<p><img loading="lazy" decoding="async" width="1142" height="495" class="wp-image-3506" src="/wp-content/uploads/2018/05/word-image-3098.png" srcset="/wp-content/uploads/2018/05/word-image-3098.png 1142w, /wp-content/uploads/2018/05/word-image-3098-300x130.png 300w, /wp-content/uploads/2018/05/word-image-3098-768x333.png 768w, /wp-content/uploads/2018/05/word-image-3098-1024x444.png 1024w" sizes="(max-width: 1142px) 100vw, 1142px" /><br />
<img loading="lazy" decoding="async" width="1045" height="561" class="wp-image-3507" src="/wp-content/uploads/2018/05/word-image-3099.png" srcset="/wp-content/uploads/2018/05/word-image-3099.png 1045w, /wp-content/uploads/2018/05/word-image-3099-300x161.png 300w, /wp-content/uploads/2018/05/word-image-3099-768x412.png 768w, /wp-content/uploads/2018/05/word-image-3099-1024x550.png 1024w" sizes="(max-width: 1045px) 100vw, 1045px" /><br />
<img loading="lazy" decoding="async" width="1088" height="354" class="wp-image-3508" src="/wp-content/uploads/2018/05/word-image-3100.png" srcset="/wp-content/uploads/2018/05/word-image-3100.png 1088w, /wp-content/uploads/2018/05/word-image-3100-300x98.png 300w, /wp-content/uploads/2018/05/word-image-3100-768x250.png 768w, /wp-content/uploads/2018/05/word-image-3100-1024x333.png 1024w" sizes="(max-width: 1088px) 100vw, 1088px" /></p>
<h2>5、Github页面介绍</h2>
<h3>1）Github主页</h3>
<p><img loading="lazy" decoding="async" width="1111" height="683" class="wp-image-3509" src="/wp-content/uploads/2018/05/word-image-3101.png" srcset="/wp-content/uploads/2018/05/word-image-3101.png 1111w, /wp-content/uploads/2018/05/word-image-3101-300x184.png 300w, /wp-content/uploads/2018/05/word-image-3101-768x472.png 768w, /wp-content/uploads/2018/05/word-image-3101-1024x630.png 1024w" sizes="(max-width: 1111px) 100vw, 1111px" /></p>
<h3>2）个人主页</h3>
<p><img loading="lazy" decoding="async" width="980" height="426" class="wp-image-3510" src="/wp-content/uploads/2018/05/word-image-3102.png" srcset="/wp-content/uploads/2018/05/word-image-3102.png 980w, /wp-content/uploads/2018/05/word-image-3102-300x130.png 300w, /wp-content/uploads/2018/05/word-image-3102-768x334.png 768w" sizes="(max-width: 980px) 100vw, 980px" /><br />
<img loading="lazy" decoding="async" width="1130" height="602" class="wp-image-3511" src="/wp-content/uploads/2018/05/word-image-3103.png" srcset="/wp-content/uploads/2018/05/word-image-3103.png 1130w, /wp-content/uploads/2018/05/word-image-3103-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3103-768x409.png 768w, /wp-content/uploads/2018/05/word-image-3103-1024x546.png 1024w" sizes="(max-width: 1130px) 100vw, 1130px" /></p>
<h3>3）收藏（Star）</h3>
<ul>
<li>情景：看到不错的开源项目，值得学习，但是今天业务繁忙，先收藏后期学习</li>
<li>操作：进入仓库主页 -&gt; 点击右上角图标（小星星 stat）即可</li>
</ul>
<p><img loading="lazy" decoding="async" width="1113" height="508" class="wp-image-3512" src="/wp-content/uploads/2018/05/word-image-3104.png" srcset="/wp-content/uploads/2018/05/word-image-3104.png 1113w, /wp-content/uploads/2018/05/word-image-3104-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3104-768x351.png 768w, /wp-content/uploads/2018/05/word-image-3104-1024x467.png 1024w" sizes="(max-width: 1113px) 100vw, 1113px" /><br />
<img loading="lazy" decoding="async" width="1061" height="314" class="wp-image-3513" src="/wp-content/uploads/2018/05/word-image-3105.png" srcset="/wp-content/uploads/2018/05/word-image-3105.png 1061w, /wp-content/uploads/2018/05/word-image-3105-300x89.png 300w, /wp-content/uploads/2018/05/word-image-3105-768x227.png 768w, /wp-content/uploads/2018/05/word-image-3105-1024x303.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /><br />
<img loading="lazy" decoding="async" width="1077" height="412" class="wp-image-3514" src="/wp-content/uploads/2018/05/word-image-3106.png" srcset="/wp-content/uploads/2018/05/word-image-3106.png 1077w, /wp-content/uploads/2018/05/word-image-3106-300x115.png 300w, /wp-content/uploads/2018/05/word-image-3106-768x294.png 768w, /wp-content/uploads/2018/05/word-image-3106-1024x392.png 1024w" sizes="(max-width: 1077px) 100vw, 1077px" /><br />
<img loading="lazy" decoding="async" width="1131" height="608" class="wp-image-3515" src="/wp-content/uploads/2018/05/word-image-3107.png" srcset="/wp-content/uploads/2018/05/word-image-3107.png 1131w, /wp-content/uploads/2018/05/word-image-3107-300x161.png 300w, /wp-content/uploads/2018/05/word-image-3107-768x413.png 768w, /wp-content/uploads/2018/05/word-image-3107-1024x550.png 1024w" sizes="(max-width: 1131px) 100vw, 1131px" /></p>
<h3>4）关注（Watch）</h3>
<ul>
<li>情景：想要了解某项目实时动态，则使用关注</li>
</ul>
<p>问：关注和收藏的区别</p>
<p>答：关注后会在github主页看到仓库动态、收藏是在个人主页查看仅收藏无动态</p>
<p><img loading="lazy" decoding="async" width="1065" height="256" class="wp-image-3516" src="/wp-content/uploads/2018/05/word-image-3108.png" srcset="/wp-content/uploads/2018/05/word-image-3108.png 1065w, /wp-content/uploads/2018/05/word-image-3108-300x72.png 300w, /wp-content/uploads/2018/05/word-image-3108-768x185.png 768w, /wp-content/uploads/2018/05/word-image-3108-1024x246.png 1024w" sizes="(max-width: 1065px) 100vw, 1065px" /></p>
<h3>5）复制克隆项目（Fork）</h3>
<ul>
<li>情景：张三在github上看到一个项目不错，并且向加入开发，则可以fork</li>
</ul>
<p>fork操作就是把别人项目的代码完成克隆一份让自己也拥有一个一模一样的仓库</p>
<p><img loading="lazy" decoding="async" width="1049" height="559" class="wp-image-3517" src="/wp-content/uploads/2018/05/word-image-3109.png" srcset="/wp-content/uploads/2018/05/word-image-3109.png 1049w, /wp-content/uploads/2018/05/word-image-3109-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3109-768x409.png 768w, /wp-content/uploads/2018/05/word-image-3109-1024x546.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" /><br />
<img loading="lazy" decoding="async" width="1026" height="597" class="wp-image-3518" src="/wp-content/uploads/2018/05/word-image-3110.png" srcset="/wp-content/uploads/2018/05/word-image-3110.png 1026w, /wp-content/uploads/2018/05/word-image-3110-300x175.png 300w, /wp-content/uploads/2018/05/word-image-3110-768x447.png 768w, /wp-content/uploads/2018/05/word-image-3110-1024x596.png 1024w" sizes="(max-width: 1026px) 100vw, 1026px" /><br />
<img loading="lazy" decoding="async" width="918" height="385" class="wp-image-3519" src="/wp-content/uploads/2018/05/word-image-3111.png" srcset="/wp-content/uploads/2018/05/word-image-3111.png 918w, /wp-content/uploads/2018/05/word-image-3111-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3111-768x322.png 768w" sizes="(max-width: 918px) 100vw, 918px" /></p>
<h2>6、开源项目贡献流程</h2>
<h3>新建issues</h3>
<p>提交使用问题或者建议或者想法等</p>
<h3>Pull Request</h3>
<p>步骤：</p>
<ol>
<li>fork项目</li>
<li>修改自己仓库的项目代码</li>
<li>新建pull request （合并请求）</li>
<li>等待作者审核</li>
</ol>
<h1>三、安装Git</h1>
<h2>1、目的</h2>
<p>通过git管理github托管的项目代码</p>
<h2>2、下载安装</h2>
<h3>GIt官网下载：<a href="/goto/3up3" rel="nofollow">https://www.git-scm.com/download/win</a></h3>
<h3>2）双击安装</h3>
<p><img loading="lazy" decoding="async" width="413" height="163" class="wp-image-3520" src="/wp-content/uploads/2018/05/word-image-3112.png" srcset="/wp-content/uploads/2018/05/word-image-3112.png 413w, /wp-content/uploads/2018/05/word-image-3112-300x118.png 300w" sizes="(max-width: 413px) 100vw, 413px" /><br />
<img loading="lazy" decoding="async" width="830" height="447" class="wp-image-3521" src="/wp-content/uploads/2018/05/word-image-3113.png" srcset="/wp-content/uploads/2018/05/word-image-3113.png 830w, /wp-content/uploads/2018/05/word-image-3113-300x162.png 300w, /wp-content/uploads/2018/05/word-image-3113-768x414.png 768w" sizes="(max-width: 830px) 100vw, 830px" /></p>
<h3>3）选择安装的工作目录</h3>
<p><img loading="lazy" decoding="async" width="493" height="387" class="wp-image-3522" src="/wp-content/uploads/2018/05/word-image-3114.png" srcset="/wp-content/uploads/2018/05/word-image-3114.png 493w, /wp-content/uploads/2018/05/word-image-3114-300x235.png 300w" sizes="(max-width: 493px) 100vw, 493px" /></p>
<h3>选择组件</h3>
<p><img loading="lazy" decoding="async" width="490" height="380" class="wp-image-3523" src="/wp-content/uploads/2018/05/word-image-3115.png" srcset="/wp-content/uploads/2018/05/word-image-3115.png 490w, /wp-content/uploads/2018/05/word-image-3115-300x233.png 300w" sizes="(max-width: 490px) 100vw, 490px" /></p>
<h3>开始菜单目录名设置</h3>
<p><img loading="lazy" decoding="async" width="487" height="383" class="wp-image-3524" src="/wp-content/uploads/2018/05/word-image-3116.png" srcset="/wp-content/uploads/2018/05/word-image-3116.png 487w, /wp-content/uploads/2018/05/word-image-3116-300x236.png 300w" sizes="(max-width: 487px) 100vw, 487px" /></p>
<h3>选择使用命令行环境</h3>
<p><img loading="lazy" decoding="async" width="484" height="385" class="wp-image-3525" src="/wp-content/uploads/2018/05/word-image-3117.png" srcset="/wp-content/uploads/2018/05/word-image-3117.png 484w, /wp-content/uploads/2018/05/word-image-3117-300x239.png 300w" sizes="(max-width: 484px) 100vw, 484px" /></p>
<h3>以下三步默认，直接点击next</h3>
<p><img loading="lazy" decoding="async" width="489" height="374" class="wp-image-3526" src="/wp-content/uploads/2018/05/word-image-3118.png" srcset="/wp-content/uploads/2018/05/word-image-3118.png 489w, /wp-content/uploads/2018/05/word-image-3118-300x229.png 300w" sizes="(max-width: 489px) 100vw, 489px" /><br />
<img loading="lazy" decoding="async" width="481" height="388" class="wp-image-3527" src="/wp-content/uploads/2018/05/word-image-3119.png" srcset="/wp-content/uploads/2018/05/word-image-3119.png 481w, /wp-content/uploads/2018/05/word-image-3119-300x242.png 300w" sizes="(max-width: 481px) 100vw, 481px" /><br />
<img loading="lazy" decoding="async" width="493" height="375" class="wp-image-3528" src="/wp-content/uploads/2018/05/word-image-3120.png" srcset="/wp-content/uploads/2018/05/word-image-3120.png 493w, /wp-content/uploads/2018/05/word-image-3120-300x228.png 300w" sizes="(max-width: 493px) 100vw, 493px" /></p>
<h3>8）等待安装</h3>
<p><img loading="lazy" decoding="async" width="487" height="389" class="wp-image-3529" src="/wp-content/uploads/2018/05/word-image-3121.png" srcset="/wp-content/uploads/2018/05/word-image-3121.png 487w, /wp-content/uploads/2018/05/word-image-3121-300x240.png 300w" sizes="(max-width: 487px) 100vw, 487px" /><br />
<img loading="lazy" decoding="async" width="507" height="379" class="wp-image-3530" src="/wp-content/uploads/2018/05/word-image-3122.png" srcset="/wp-content/uploads/2018/05/word-image-3122.png 507w, /wp-content/uploads/2018/05/word-image-3122-300x224.png 300w" sizes="(max-width: 507px) 100vw, 507px" /><br />
<img loading="lazy" decoding="async" width="494" height="384" class="wp-image-3531" src="/wp-content/uploads/2018/05/word-image-3123.png" srcset="/wp-content/uploads/2018/05/word-image-3123.png 494w, /wp-content/uploads/2018/05/word-image-3123-300x233.png 300w" sizes="(max-width: 494px) 100vw, 494px" /></p>
<h3>检验是否安装成功</h3>
<p><img loading="lazy" decoding="async" width="321" height="308" class="wp-image-3532" src="/wp-content/uploads/2018/05/word-image-3124.png" srcset="/wp-content/uploads/2018/05/word-image-3124.png 321w, /wp-content/uploads/2018/05/word-image-3124-300x288.png 300w" sizes="(max-width: 321px) 100vw, 321px" /></p>
<h1>四、Git基本工作流程</h1>
<h2>1、Git工作区域</h2>
<p><img loading="lazy" decoding="async" width="630" height="345" class="wp-image-3533" src="/wp-content/uploads/2018/05/word-image-3125.png" srcset="/wp-content/uploads/2018/05/word-image-3125.png 630w, /wp-content/uploads/2018/05/word-image-3125-300x164.png 300w" sizes="(max-width: 630px) 100vw, 630px" /></p>
<h2>2、向仓库中添加文件流程</h2>
<p><img loading="lazy" decoding="async" width="674" height="356" class="wp-image-3534" src="/wp-content/uploads/2018/05/word-image-3126.png" srcset="/wp-content/uploads/2018/05/word-image-3126.png 674w, /wp-content/uploads/2018/05/word-image-3126-300x158.png 300w" sizes="(max-width: 674px) 100vw, 674px" /></p>
<h1>五、Git管理本地仓库</h1>
<h2>1、基本信息设置</h2>
<p><img loading="lazy" decoding="async" width="589" height="342" class="wp-image-3535" src="/wp-content/uploads/2018/05/word-image-3127.png" srcset="/wp-content/uploads/2018/05/word-image-3127.png 589w, /wp-content/uploads/2018/05/word-image-3127-300x174.png 300w" sizes="(max-width: 589px) 100vw, 589px" /></p>
<p>步骤1：在桌面创建一个test文件夹</p>
<p>步骤2：进入文件夹鼠标右击，选择【Git Bash Here】</p>
<p><img loading="lazy" decoding="async" width="755" height="267" class="wp-image-3536" src="/wp-content/uploads/2018/05/word-image-3128.png" srcset="/wp-content/uploads/2018/05/word-image-3128.png 755w, /wp-content/uploads/2018/05/word-image-3128-300x106.png 300w" sizes="(max-width: 755px) 100vw, 755px" /></p>
<p>步骤3：输入初始化指令</p>
<p><img loading="lazy" decoding="async" width="484" height="330" class="wp-image-3537" src="/wp-content/uploads/2018/05/word-image-3129.png" srcset="/wp-content/uploads/2018/05/word-image-3129.png 484w, /wp-content/uploads/2018/05/word-image-3129-300x205.png 300w, /wp-content/uploads/2018/05/word-image-3129-220x150.png 220w" sizes="(max-width: 484px) 100vw, 484px" /></p>
<h2>2、初始化一个新的Git仓库</h2>
<p><img loading="lazy" decoding="async" width="962" height="591" class="wp-image-3538" src="/wp-content/uploads/2018/05/word-image-3130.png" srcset="/wp-content/uploads/2018/05/word-image-3130.png 962w, /wp-content/uploads/2018/05/word-image-3130-300x184.png 300w, /wp-content/uploads/2018/05/word-image-3130-768x472.png 768w" sizes="(max-width: 962px) 100vw, 962px" /></p>
<h2>3、向仓库添加文件</h2>
<p><img loading="lazy" decoding="async" width="846" height="641" class="wp-image-3539" src="/wp-content/uploads/2018/05/word-image-3131.png" srcset="/wp-content/uploads/2018/05/word-image-3131.png 846w, /wp-content/uploads/2018/05/word-image-3131-300x227.png 300w, /wp-content/uploads/2018/05/word-image-3131-768x582.png 768w" sizes="(max-width: 846px) 100vw, 846px" /></p>
<h2>4、修改仓库文件</h2>
<p><img loading="lazy" decoding="async" width="971" height="559" class="wp-image-3540" src="/wp-content/uploads/2018/05/word-image-3132.png" srcset="/wp-content/uploads/2018/05/word-image-3132.png 971w, /wp-content/uploads/2018/05/word-image-3132-300x173.png 300w, /wp-content/uploads/2018/05/word-image-3132-768x442.png 768w" sizes="(max-width: 971px) 100vw, 971px" /></p>
<h2>5、删除仓库文件</h2>
<p><img loading="lazy" decoding="async" width="737" height="460" class="wp-image-3541" src="/wp-content/uploads/2018/05/word-image-3133.png" srcset="/wp-content/uploads/2018/05/word-image-3133.png 737w, /wp-content/uploads/2018/05/word-image-3133-300x187.png 300w" sizes="(max-width: 737px) 100vw, 737px" /></p>
<h1>六、Git管理远程仓库</h1>
<h2>1、使用远程仓库的目的</h2>
<p><img loading="lazy" decoding="async" width="657" height="363" class="wp-image-3542" src="/wp-content/uploads/2018/05/word-image-3134.png" srcset="/wp-content/uploads/2018/05/word-image-3134.png 657w, /wp-content/uploads/2018/05/word-image-3134-300x166.png 300w" sizes="(max-width: 657px) 100vw, 657px" /><br />
<img loading="lazy" decoding="async" width="676" height="378" class="wp-image-3543" src="/wp-content/uploads/2018/05/word-image-3135.png" srcset="/wp-content/uploads/2018/05/word-image-3135.png 676w, /wp-content/uploads/2018/05/word-image-3135-300x168.png 300w" sizes="(max-width: 676px) 100vw, 676px" /></p>
<h2>2、Git克隆操作</h2>
<h3>1）目的</h3>
<h3>2）练习</h3>
<p>步骤1：克隆</p>
<p><img loading="lazy" decoding="async" width="977" height="598" class="wp-image-3544" src="/wp-content/uploads/2018/05/word-image-3136.png" srcset="/wp-content/uploads/2018/05/word-image-3136.png 977w, /wp-content/uploads/2018/05/word-image-3136-300x184.png 300w, /wp-content/uploads/2018/05/word-image-3136-768x470.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<p>步骤2：在仓库目录下新建文件或新建代码</p>
<p><img loading="lazy" decoding="async" width="877" height="636" class="wp-image-3545" src="/wp-content/uploads/2018/05/word-image-3137.png" srcset="/wp-content/uploads/2018/05/word-image-3137.png 877w, /wp-content/uploads/2018/05/word-image-3137-300x218.png 300w, /wp-content/uploads/2018/05/word-image-3137-768x557.png 768w" sizes="(max-width: 877px) 100vw, 877px" /></p>
<h2>将本地仓库同步到git远程仓库中</h2>
<p><img loading="lazy" decoding="async" width="751" height="107" class="wp-image-3546" src="/wp-content/uploads/2018/05/word-image-3138.png" srcset="/wp-content/uploads/2018/05/word-image-3138.png 751w, /wp-content/uploads/2018/05/word-image-3138-300x43.png 300w" sizes="(max-width: 751px) 100vw, 751px" /><br />
<img loading="lazy" decoding="async" width="612" height="362" class="wp-image-3547" src="/wp-content/uploads/2018/05/word-image-3139.png" srcset="/wp-content/uploads/2018/05/word-image-3139.png 612w, /wp-content/uploads/2018/05/word-image-3139-300x177.png 300w" sizes="(max-width: 612px) 100vw, 612px" /><br />
<img loading="lazy" decoding="async" width="566" height="202" class="wp-image-3548" src="/wp-content/uploads/2018/05/word-image-3140.png" srcset="/wp-content/uploads/2018/05/word-image-3140.png 566w, /wp-content/uploads/2018/05/word-image-3140-300x107.png 300w" sizes="(max-width: 566px) 100vw, 566px" /><br />
<img loading="lazy" decoding="async" width="1057" height="467" class="wp-image-3549" src="/wp-content/uploads/2018/05/word-image-3141.png" srcset="/wp-content/uploads/2018/05/word-image-3141.png 1057w, /wp-content/uploads/2018/05/word-image-3141-300x133.png 300w, /wp-content/uploads/2018/05/word-image-3141-768x339.png 768w, /wp-content/uploads/2018/05/word-image-3141-1024x452.png 1024w" sizes="(max-width: 1057px) 100vw, 1057px" /></p>
<p>多学一招：github ssh提交实战推荐。</p>
]]></content:encoded>
					
					<wfw:commentRss>/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/3478.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
