引言
以前我们写的项目都比较简单,功能较少,所以都是一个人来独立开发的,如果现在我们要开发一个功能完善的项目,那么就需要多人团队合作开发,那么在合作开发的过程中就需要实现代码共享,版本控制工具就可以帮我们实现。
比如我们要开发一个宿舍管理系统,张三负责登陆功能实现、李四负责楼栋管理功能实现、王五负责宿管员管理功能实现,我们就可以借助版本控制工具来实现代码共享,张三在做完登陆功能后,将代码上传到代码仓库,其它人去仓库进行下载更新,就可以实现代码共享。
1 什么是版本控制
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。
版本,也就是修改过的历史记录,帮助我们将修改前的版本保存下来,后期可以查看。
2 什么是 Git
众多版本控制工具中的一个
Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。
Git 易于学习,占地面积小,具有闪电般的快速性能,它具有诸如 Subversion,CVS 之类的版本控制工具,具有廉价的本地分支,便捷的暂存区域和多个工作流等功能。
3 集中式版本控制
集中化的版本控制系统诸如 CVS,SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
换句话说,集中式就是把所有的代码都放在一个服务器上集中管理
特点:所有的历史记录都在服务器端,程序员本地不存储历史版本,结构简单,但是有一个问题,万一服务器崩了,那么代码就没了
eg:
每个人写完自己的部分,提交到服务器,其他人进行更新,这样就实现了代码共享
4 分布式版本控制
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库),这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
eg:
特点:每个程序员的电脑上,都会安装一个客户端(本地仓库),用来记录自己的历史版本
5 Git 工作流程
1.本地工作流程及基本概念
工作区:就是你在电脑里能看到的目录,在本地磁盘创建项目(一般在开发工具中完成)
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,添加工作区代码到暂存区,暂存区代码是临时存储,可以撤销
版本库:工作区有一个隐藏目录 .git,是 Git 的版本库,提交暂存区代码到本地仓库,生成历史版本记录,历史版本记录不可删除,可以查看不同时期提交的历史记录,和其他版本做比较
2.完整的运行流程(本地库与远程仓库)
1.工作区代码添加到暂存区
2.暂存区代码提交到本地版本库
3.本地版本库代码推送到远程仓库
4.从远程仓库拉取代码到本地
说明:
workspace:工作区
staging area:暂存区/缓存区
local repository:或本地仓库
remote repository:远程仓库
远程仓库:代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
局域网:GitLabe
互联网
GitHub(外网)
Gitee 码云(国内网站)
6 Git 基本操作
Git 常用命令:
1.git add
2.git commit
3.git reset
4.git clone
安装 Git(见博客:(31条消息) Git安装_wxchen.的博客-CSDN博客)
成功后打开 Git 管理命令窗口
1. 创建仓库
D:\gitTest 自己创建文件夹
命令行窗口进入所在目录(同级)
2. 初始化
- git init 仓库名
- 初始化后会生成git的配置文件目录,该文件为隐藏文件,我们需要设置隐藏文件可见才能看到
3. 提交到暂存区
git add 文件名 (提交指定文件)
git add (提交所有所有文件)
4. 查看暂存区
git ls-files
5. 恢复暂存区的指定文件到工作区
git reset 文件名 撤销指定文件
git reset 撤销所有文件
6. 提交到本地仓库
git commit -m 注释
注意:
提交时可能会出现一个提示:Please tell me who you are.
翻译过来就是:请告诉我你是谁
就是说git无法识别你是谁,你需要告诉git你的身份
解决方法:在 终端||命令行 输入你的邮箱和名称
git config --global user.email "邮箱地址" git config --global user.name "名称"
在输入回车之后,就不会再出现这个问题了
注意:git config命令的–global参数,用了这个参数,表示我们这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
我们可以使用命令来查看我们的配置信息:
git config -l
7. 查看仓库状态
git status
8. 克隆项目 :git clone 地址
从远程仓库把代码拉取到本地使用
例如在gitee(Gitee - 基于 Git 的代码托管和研发协作平台)中下载别人的项目:
复制地址,然后在终端中使用git clone命令加地址,就可以将远程仓库的代码拉取到本地