目录
一、什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
-
实现跨区域多人协同开发
-
追踪和记载一个或者多个文件的历史记录
-
组织和保护你的源代码和文档
-
统计工作量
-
并行开发、提高开发效率
-
跟踪记录整个软件的开发过程
-
减轻开发人员的负担,节省时间,同时降低人为错误
简单说就是用于管理多人协同开发项目的技术。
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
无论是工作还是学习,或者是自己做笔记,都经历过这样一个阶段!我们就迫切需要一个版本控制工具!
二、git 概述
1.常见的版本控制工具
主流的版本控制器有如下这些:
-
Git
-
SVN(Subversion)
-
CVS(Concurrent Versions System)
-
VSS(Micorosoft Visual SourceSafe)
-
TFS(Team Foundation Server)
-
Visual Studio Online
版本控制产品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),现在影响力最大且使用最广泛的是Git与SVN
2、版本控制分类
(1)本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
(2)集中版本控制 SVN
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS
(3)分布式版本控制 Git
缺点:每个人都拥有全部的代码!存在安全隐患!
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况!
3.Git与SVN的主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!
Git是目前世界上最先进的分布式版本控制系统。
4.Git工作流程
命令如下:
clone(克隆): 从远程仓库中克隆代码到本地仓库
checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
add(添加): 在提交前先将代码提交到暂存区
commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
fetch (抓取) : 从远程库抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于
fetch+merge
push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
三、软件安装和配置
1.下载安装
打开 [git官网] :https://git-scm.com/,下载git对应操作系统的版本。
官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/
下载对应的版本即可安装!
安装:无脑下一步即可!安装完毕就可以使用了!
安装完成后,在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
2.基本配置
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。
(1)设置用户信息
git config --global user.name "XXX" # 设置用户名
git config --global user.email "XXXX" # 设置邮箱
(2)创建本地仓库
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库
- 在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
- 进入这个目录中,点击右键打开Git bash窗口
- 执行命令git init
- 如果创建成功后可在文件夹下看到隐藏的.git目录
四、基础操作指令
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。
使用命令来控制这些状态之间的转换:
- git add (工作区 —> 暂存区)
- git commit (暂存区 —> 本地仓库)
(1)status查看修改的状态
作用:查看修改的状态(暂存区、工作区)
命令形式:git status
(2) add添加工作区到暂存区
作用:添加工作区一个或多个文件的修改到暂存区
命令形式:git add 单个文件名 或 通配符
- git add file.txt # 添加单个文件
- git add . # 将所有修改加入暂存区
(3) commit提交暂存区到本地仓库
作用:提交暂存区内容到本地仓库的当前分支
命令形式:git commit -am "注释内容"
- git commit -am "XXX update"
(4)log查看提交日志
作用:查看提交记录
命令形式:git log [option]
- --all 显示所有分支
- --pretty=oneline 将提交信息显示为一行
- --abbrev-commit 使得输出的commitId更简短
- --graph 以图的形式显示
(5) 版本回退
作用:版本切换
命令形式:git reset --hard commit ID
# commit ID 可以使用 git-log 或 git log 指令查看
git reflog 这个指令可以查看到已删除的提交记录
2.分支操作
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
(1)查看本地分支
- git branch
(2)创建本地分支
- git branch 分支名
(3) 切换分支
- git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换):
- git checkout -b 分支名
(4)合并分支
在当前分支上合并另一个分支
- git merge 分支名
PS:合并冲突
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:
- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
(5)删除分支
不能删除当前分支,只能删除其他分支
- git branch -d 分支名 # 删除分支时,需要做各种检查
- git branch -D 分支名 # 不做任何检查,强制删除
3.远程仓库操作
(1)创建远程仓库别名
默认别名为 origin:
- git remote -v #查看当前所有远程地址别名
- git remote add 别名 远程地址 #起别名
(2)推送分支到远程仓库
- git push [别名/链接] 分支名 # 推送本地分支上的内容到远程仓库
(3)拉去远程库到本地库
- git pull [别名] [拉去的分支] # 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
(4)克隆远程库到本地
- git clone 远程链接地址 # 将远程仓库的内容克隆到本地
(5)删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
五、码云的使用
1.设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库!)
到 C:\Users\86510 目录下,打开 Git Bash,执行 ssh-keygen -t rsa ,按三次回车即可:
会自动生成 .ssh 目录包含两个秘钥文件:
2.将公钥信息public key 添加到码云账户中即可:
确定后输入Gitee密码燕子矶即可
3.使用码云创建一个自己的仓库!
4.克隆到本地
复制链接即可
第一次需要输入Gitee账号密码