版本控制工具-Git
一、版本工具介绍
1、 什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
2、常见的版本控制器
主流的版本控制器有如下这些:
Git
SVN(Subversion)
CVS(Concurrent Versions System)
VSS(Micorosoft Visual SourceSafe)
版本控制产品非常的多,现在影响力最大且使用最广泛的是Git与SVN
2.1集中版本控制
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改;

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS
2.2、分布式版本控制
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

2.3、Git与SVN最主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
二、创建Git工作环境
下载Git
打开 git官网,下载git对应操作系统的版本。

选择版本

这里我选择下载64-bit Git for Windows Setup

1.1、安装Git

选择安装配置信息

一直Next默认就好了,如果需要设置就要仔细读一下安装界面上的选项。
1.2、启动Git
安装成功后在开始菜单中会有Git项,菜单下有3个程序:

Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多

Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

点击Create New Repository可以直接创建一个新的仓库。
三、 Git工作流程介绍
Git是目前世界上最先进的分布式版本控制系统。首先了解下git的工作流程:

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
四、git基本操作
1、 初始化配置
# 设置用户名
git config --global user.name "你的名字"
# 配置用户邮箱
git config --global user.email "你的常用邮箱"
# 查看配置列表项
git config --list
2、基本操作
git init --- 初始化仓库
要使用Git进行版本管理,必须先初始化仓库。Git是使用git init命令进行初始化操作。
如果初始化成功,执行了git init命令的目录就会生成.git目录。这个.git目录里存储着管理当前目录内容所需要的仓库数据。 在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照。
git status ---- 查看仓库的状态
git status命令用于显示git仓库的状态。非常有用,务必牢记。 工作树和仓库在被操作的过程中,状态会不断发生变化。在Git操作过程中时常使用git status命令查看当前状态。
git add --- 向暂存区添加文件
如果只在Git仓库所在目录里创建了文件或文件夹,该文件不会被记入Git仓库的版本管理对象中,我们用git status命令查看时,它会显示在未跟踪文件中。 想要让文件成为Git仓库的管理对象。就需要用git add命令将其加入暂存区。暂存区是提交前的一个临时区域。
git commit ----保存仓库的历史记录(git commit -m “注释内容”)
git commit命令将当前暂存区的文件实际保存到仓库的历史记录中。
git log ---- 查看提交日志
git log命令可以查看以往仓库中提交的日志,包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎么样的差别[ git reflog :查看提交日志信息,经常与回退命令结合使用]。
Git reset----回退版本【基于索引的版本回退】
git reset --hard 版本标识
回到指定版本。
--什么是分支?
在版本控制过程中,使用多条线同时推进多个任务。几乎所有的版本控制系统都以某种形式支持分支;使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

--分支的好处?
-->同时并行推进多个功能的开发,提高开发效率;
-->各个分支在开发过程是相对独立的,如果某一个分支开发失败,不会对其它分支有任何影响;失败的分支删除重新开始即可。
---分支的创建和合并
分支的创建
$ git branch <branch name>.
$ git checkout -b <branch name>
分支的跳转
$ git checkout <branch name>
合并分支
1、切换到接受修改的分支(被合并,增加新内容)上,git checkout [分支名];
2、执行merge命令。
如下: $ git merge <branch name>
// 把该分支修改并提交的内容合并到master(主)分支
删除分支
$ git branch -D <branch name>
查看所有分支
$ git branch -v
--合并的冲突
1、编辑文件,删除特殊符号;
2、把文件修改到满意的程度,保存退出;
3、Git add[文件名];
4、Git commit -m “注释” 。注意:此时commit一定不能带具体文件名。
冲突需要自行修改
<<<<<<< HEAD
What's a Vegetable's favourite martial art? Carrotee!
=======
Why did the carrot get an award? Because he was outstanding in his field!
>>>>>>> your-branch
git中如何忽略文件上传?
具体操作:
第一步进入我们项目的根目录,我是直接使用git bash直接进入的。在项目的根目录创建.gitignore文件,此时一定要在没创建git仓库的时候创建该文件(也就是说还没使用git init的时候)。如下图

我们在该文件写入我们忽略的文件和文件夹即可。

在完成上诉操作之后,我们就可以开始创建我们的git仓库了。

===远程仓库===

4、建立远程仓库连接别名
// 建立remote(origin)的url别名
$ git remote add origin <repository URL>
// 更新已有的remote(origin)的url别名
$ git remote set-url origin <repository URL>
// 添加一个新的remote,名字为github
$ git remote add github <new repository URL>
//删除远程链接别名
$ git remote rm origin
// 提交远程
$ git push origin master
//拉取远程文件操作
$ git pull origin master

5. 与远程版本库协作
假设远程版本库的地址 http://github.com/example/test.git
$ git clone http://github.com/example/test.git
提交更改
$ git push origin master
// origin 指定远程版本库的地址,master部分指定同步到哪一个分支
将远程版本库的修改同步到本地
$ git fetch origin master
$ git merge origin/master
$ git pull origin master
// pull 相当于将fetch和merge两个命令一起执行
注:更新操作:
$ git pull$ git pull origin
将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin master
上面命令表示,取回 origin/master 分支,再与本地的 brantest 分支合并。
--跨团队协作开发(知识拓展)