引入
思考一下,在开发过程中,我们都会遇到那些麻烦,第一点就是在写代码的过程中突然断电了,那么代码没有备份怎么办,因此代码备份很重要,其次在写代码的同时我们需要不断的更新迭代,但是有时候又需要回退到某个版本,那么版本控制很重要,当项目很庞大时,需求开发肯定不能只靠一个人,那么协同工作很重要,如果某个人写错了代码,线上出现了问题,需要查看问题代码是谁写的,那么责任追溯很重要,那么如今市面上实现这些功能的两种产品分别是SVN以及Git。
SVN与Git对比
SVN
SVN是集中式版本控制系统,代码版本库是集中放在中央服务器里的,开发人员只需要从中央服务器进行代码的上传下载即可(只有服务器存储了版本记录,本地只有一份代码)
弊端
- 中央服务器发生故障, 硬盘损坏, 对项目的代码是毁灭性的。
Git
Git是开源的分布式版本控制工具,分为本地仓库和远程仓库 ,其中远程仓库就类似于SVN的中央服务器
优点
本地仓库即每一个客户端都保存了完整的历史记录,与远程仓库同步,服务器故障后,都可以通过客户端的记录进行恢复。
安装下载
官网地址:https://git-scm.com/downloads
下载完后一路下一步,完成安装。打开控制台输入 git --version查看版本。版本能看到就ok了
Git基本工作流程
区域
工作目录 —— 本地存放代码的位置,这里的代码经常变动
暂存区 —— 即工作目录的代码会先放到暂存区,代码提交到仓库之前的临时存储空间。
本地历史仓库 —— 将暂存区的代码提交后即可进入本地历史仓库,存放不同版本的代码
常用命令
实际操作
-
创建一个文件夹my_project (mkdir my_project),初始化git仓库(git init)。
-
新建一个test.txt文件(touch test.txt),不执行添加操作。
-
使用git status查看状态。
-
使用add命令添加到暂存区,查看状态。
-
使用commit命令,提交到本地历史仓库 使用-m添加描述, 再次使用git status就没有需要提交的文件了。
-
使用git log,查看日志。其中黄色的代表提交的唯一标识。
-
修改test.txt文件,添加并且提交,然后查看日志。可以发现log出现了新的一条
版本管理
历史版本切换
- 首先查看my_project 的log日志(git reflog)
- 新增一次工作目录的修改,使其有三条日志记录。
- 将代码切换到第二次修改的版本 (git reset --hard 版本唯一索引值)
分支管理
假如一个项目正在开发新功能,并且这个新功能开发周期很长,第一周写了20%的代码,突然发现原来的代码有Bug,但是新功能20%的代码又不能丢弃,因此需要开启一个新的分支区进行Bug修复。同理开发新功能时也可以拉出新的分支
- 创建分支 : git branch 分支名
- 切换分支 : git checkout 分支名
- 查看分支列表: git branch
- 合并分支 : 比如把xiaoming合并到master,首先切换到master,然后git merge xiaoiming
- 删除分支 : git branch -d 分支名
远程仓库
工作流程
操作步骤
- 创建远程仓库
- 生成SSH公钥步骤
- 设置Gig账户(账户和邮箱)
- git config --global user.name “账户名”
- git config --global user.email “邮箱”
- ssh-keygen -t rsa -C “邮箱”
- 设置Gig账户(账户和邮箱)
- 推送到远程仓库
- 为远程仓库的URL自定义名称
- git remote add 远程名称 远程仓库URL
- 推送
- git push -u 仓库名称 分支名
- 为远程仓库的URL自定义名称
- 拉取远程仓库
- 先克隆 git clone 仓库地址
- 创建新文件 添加并提交到本地仓库
- 推送到远程仓库
- 更新
- git pull 远程仓库名 分支名