1. 版本管理工具概念

版本管理工具一般具有如下特性:

  1. 能够记录历史版本,回退历史版本
  2. 团队开发,方便代码合并

2. 版本管理工具介绍

现在比较流行的版本管理工具是git ,但是实际上git 是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,比如svn

2.1 SVN(SubVersion)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的.
工作流程如下:
1.从中央服务器远程仓库下载代码
2.修改后将代码提交到中央服务器远程仓库

优缺点:
优点: 简单,易操作
缺点:所有代码必须放在中央服务器
1. 服务器一旦宕机无法提交代码,即容错性较差
2. 离线无法提交代码,无法及时记录我们的提交行为

2.2 Git

工作流程

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:
本地仓库和远程仓库
工作流程如下
1.从远程仓库中克隆或拉取代码到本地仓库(clone/pull)
2.从本地进行代码修改
3.在提交前先将代码提交到暂存区
4.提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

总结:git和svn的区别

1. svn 是集中式版本控制工具,git 是分布式版本控制工具
2. svn 不支持离线提交,git 支持离线提交代码

3. git 流程图

git流程

3.1概念即详解

本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库)		
远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器)
工作区: 我们自己写代码(文档)的地方
暂存区: 在 本地仓库中的一个特殊的文件(index) 叫做暂存区,临时存储我们即将要提交的文件
------------
Clone:克隆,就是将远程仓库复制到本地仓库
Push:推送,就是将本地仓库代码上传到远程仓库
Pull:拉取,就是将远程仓库代码下载到本地仓库,并将代码克隆到本地工作区

4.命令行-- git基本操作

4.1 环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息

#设置用户信息 
   git config --global user.name “xzx”
   git config --global user.email “XiuZuoxin@qq.com”
#查看配置信息
   git config --list
   git config user.name
#通过上面的命令设置的信息会保存在~/.gitconfig文件中

4.2 常用命令

(※)代表命令比较常用

① 初始化本地仓库 init

# 初始化仓库带工作区
git init (※)
# 初始化仓库不带工作区
git init --bare  

② 克隆 clone

# 从远程仓库克隆
git clone 远程Git仓库地址 (※)
例如: git clone https://gitee.com/xiu/gittest.git

③ 查看状态 status

# 查看状态
git status 
#查看状态 使输出信息更加简洁
git status –s 

④ 加入暂存区add

# 将未跟踪的文件加入暂存区
git add  <文件名>  
# 一般使用如下,点 为通配符,代表所有
git add . (※)
# 将暂存区的文件取消暂存 (取消 add )
git reset  <文件名>  

⑤ 提交本地仓库commit

# git commit 将暂存区的文件修改提交到本地仓库
# -m 代表直接在后面输入日志信息,不加 -m 会跳转到单独的日志界面输入
git commit -m "日志信息"  <文件名>  (※)

⑥ 删除 rm

# 从本地工作区 删除文件
git rm <文件名>  
# 如果本工作区库误删, 想要回退
git checkout head <文件名>  

5. 命令行–git 远程仓库操作

5.1 查看远程

# 查看远程  列出指定的每一个远程服务器的简写
git remote 
# 查看远程 , 列出 简称和地址
git remote  -v  
# 查看远程仓库详细地址
git remote show  <仓库简称>

5.2 添加/移除远程仓库

# 添加远程仓库
git remote add <shortname> <url>
# 移除远程仓库和本地仓库的关系(只是从本地移除远程仓库的关联关系,并不会真正影响到远程仓库)
git remote rm <shortname> 

5.3 从远程仓库获取代码

# 从远程仓库克隆
git clone <url> 
# 从远程仓库拉取 (拉取到.git 目录,不会合并到工作区,工作区发生变化)
git fetch  <shortname>  <分支名称>
# 手动合并  把某个版本的某个分支合并到当前工作区
git merge <shortname>/<分支名称>
# 从远程仓库拉取 (拉取到.git 目录,合并到工作区,工作区不发生变化) = fetch+merge
git pull  <shortname>  <分支名称> (※)
git pull  <shortname>  <分支名称>  --allow-unrelated-histories  #  强制拉取合并

注意:如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在git pull命令后加入参数–allow-unrelated-histories (如上 命令)

# 将本地仓库推送至远程仓库的某个分支
git push [remote-name] [branch-name] (※)

6. 命令行-- 分支

# 默认 分支名称为 master
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 创建分支
git branch <分支名>
# 切换分支 
git checkout <分支名>
# 删除分支(如果分支已经修改过,则不允许删除)
git branch -d  <分支名>
# 强制删除分支
git branch -D  <分支名>
# 提交分支至远程仓库
git push <仓库简称> <分支名称>	
# 合并分支 将其他分支合并至当前工作区
git merge <分支名称>
# 删除远程仓库分支
git push origin –d branchName

Q.E.D.


在读程序猿+指弹发烧友+力量举、街头健身爱好者。