所需软件私信我邮箱。css
VCS(version control system)版本控制系统。分为两种,分布式版本控制系统(以git为表明)和集中式版本控制系统(SVN为表明)。
html
集中式代码管理的核心是服务器,全部开发者在开始新一天的工做以前必须从服务器获取代码,而后开发,最后解决冲突,提交。全部的版本信息都放在服务器上。若是脱离了服务器,开发者基本上能够说是没法工做的。下面举例说明:git
开始新一天的工做:github
1、从服务器下载项目组最新代码。windows
2、进入本身的分支,进行工做,每隔一个小时向服务器本身的分支提交一次代码(不少人都有这个习惯。由于有时候本身对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时本身修改了哪些代码,就须要这样作了)。安全
3、下班时间快到了,把本身的分支合并到服务器主分支上,一天的工做完成,并反映给服务器。bash
这就是经典的svn工做流程,从流程上看,有很多缺点,但也有优势。服务器
优势:markdown
1、管理方便,逻辑明确,符合通常人思惟习惯。ssh
2、易于管理,集中式服务器更能保证安全性。
3、代码一致性很是高。
4、适合开发人数很少的项目开发。
缺点:
1、服务器压力大。
二、特别依赖服务器,脱离了服务器,没法开展工做。
Git是一个开源的分布式版本控制系统,能够有效、高速地处理从很小到很是大的项目版本管理。
Git的功能特性:
从通常开发者的角度来看,git有如下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在本身的机器上根据不一样的开发目的,建立分支,修改代码。
3、在单机上本身建立的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,而后跟本身的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,若是主开发者发现两个通常开发者之间有冲突(他们之间能够合做解决的冲突),就会要求他们先解决冲突,而后再由其中一我的提交。若是主开发者能够本身解决,或者没有冲突,就经过。
8、通常开发者之间解决冲突的方法,开发者之间可使用pull 命令解决冲突,解决完冲突以后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有如下功能:
1、查看邮件或者经过其它方式查看通常开发者的提交状态。
2、打上补丁,解决冲突(能够本身解决,也能够要求开发者之间解决之后再从新提交,若是是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向公共服务器提交结果,而后通知全部开发人员。
优势:
l 适合分布式开发,强调个体。
l 公共服务器压力和数据量都不会太大。
l 速度快、灵活。
l 任意两个开发者之间能够很容易的解决冲突。
l 离线工做。
缺点:
l 资料少(起码中文资料不多)。
l 学习周期相对而言比较长。
l 不符合常规思惟。
l 代码保密性差,一旦开发者把整个库克隆下来就能够彻底公开全部代码和版本信息。
git不是github,git的远端托管仓库有github、gitlab、gitee。
下载地址:https://git-scm.com/download/
双击安装,无脑下一步。
安装完成。此时是安装了三个东西,git GUI、git Bash、gitk。在桌面上右键:
用户可视化界面。
命令行工具。
分支可视化工具。可查看diff。
GIT bash里面是纯Linux命令。
pwd 查看当前所在目录
cd 切换文件夹
mkdir aaa 建立文件夹
touch 1.js 建立文件
mv 1.js ./2.js 更名
rm -rf ./2.js 强制删除
ls -all 列出当前目录的文件
使用git以前必定要全局配置,告诉git你是谁。
git config --global user.name "huoqingchi"
git config --global user.email "123203557@qq.com"
此时,在C:\Users\Administrator(家目录)文件夹下生成了一个.gitconfig隐藏文件,用来记录你的用户名和密码。
若是你看不到这个文件,打开工具-文件夹选项-查看-显示隐藏的文件、文件夹:
新建文件git_project文件夹,执行
git init
此时文件夹中生成.git隐藏文件夹,这个文件夹千万不能删除,它是用来记录版本信息的。
新建了index.html文件和index.css文件。
git add .
git commit -m "项目开荒"
git add . :添加当前文件夹下(包括里面的子文件夹)全部的有变更的文件到“待提交区域”
git commit : 提交文件到git版本库,真正的提交。
-m :注释
此时查看gitk:
若是手误把你文件删除了,可是保证没把.git文件删除,能够把你最新提交的代码拉取回来:
git checkout .
git checkout .:拉取全部的文件
git checkout 文件名字:拉取单个文件
每次版本提交,会生成一个SHA id码,用来区分每次的版本,能够用这个码来实现版本回退。
要回到哪次版本,在gitk中查看这次版本的SHA码,复制下来。
git Bash中执行:
git reset --hard 08a96f3b0dc354aebc7ac471546681c433b050a40
此时gitk,发现后续版本都没有了,我若是想去后续版本,找不到SHA码
此时执行:
git reflog
此时会显示出来版本提交的列表以及每次提交的ID,我们使用ID实现去后续版本。
执行:
git reset --hard 66a2cca
就能回到第五次版本。
gitHub是一个面向开源及私有软件项目的托管平台,由于只支持git 做为惟一的版本库格式进行托管,故名gitHub。也有付费版的,供企业使用。
注册只须要邮箱,这里不作演示。我直接登陆。
如今git项目好了,github上库也建好了,你托管git项目的时候github不知道你把你的项目托管到哪,因此我们须要一个SSH码来让github知道你是谁。
生成SSH码:
ssh-keygen -t rsa -C "你注册github的邮箱"
ssh-keygen:生成一个密匙;
-t rsa:密匙的类型是rsa;
-C:注释
输入命令后按三下回车。
而后生成的密匙保存在 c/Users/Administrator/.ssh/id_rsa.pub,复制密匙。
用编辑器打开(注意,不要使用windows自带的记事本,由于windows自带的记事本的换行符有bug)。
打开id_rsa.pub文件,复制里面的全部内容
打开github中的setting:
此时测试一下你的电脑和远端github库有没有联通:
ssh -T git@github.com
能出现Hi 你的github的名字就说明联通成功了。
md文件是markdown文件的后缀,相似与html,README.md文件显示在你项目的首页,用来介绍整个项目。
touch README.md
添加图片:
获得图片绝对地址能够把须要的图片上传到github上面而后得到github分配给你的绝对地址:
以后在改变README.me文件:
  图片alt就是显示在图片下面的文字,至关于对图片内容的解释。 图片title是图片的标题,当鼠标移到图片上时显示的内容。title可加可不加
git add . git commit -m “项目托管” git remote add origin https://github.com/mufengsm/aiqianduan8.git//这个地址是你本身的仓库地址 git push -u origin master
Github库的地址:
git clone https://github.com/mufengsm/aiqianduan8.git
项目的开发必定不能在主分支上,必定是在本身的分支上。主分支必定要是稳定的,是用来发布版本的。
建立分支:
git branch huo1
切换分支:
git checkout huo1
删除分支:
git branch -D huo2
在本身分支上修改后,上传到远端giuhub库:
git add . git commit -m “huo的提交” git push origin huo1
合并分支,把huo1合并到主分支:
git merge huo //切换到另外一个分支进行跟huo合并
如何进入到这种状态能够取消此次合并,使用“git merge --abort”命令:
若是合并时进入到这个页面输入冒号加wq ":wq", 按回车键,意思就是就是忽略这个提示:
解决合并时产生的冲突,好比我给两个开发者在各自分支上开发的时候给同一个元素设置了不一样的样式就会报错:
遇到冲突须要手动解决冲突,而后从新add/commit/push
编辑器可以自动感应.git文件夹。
能够查看改变: