
版本管理工具一般具有如下特性:
1 2
| 1) 能够记录历史版本,回退历史版本 2) 团队开发,方便代码合并
|
1. 版本管理工具介绍
现在比较流行的版本管理工具是git ,但是实际上git 是近几年才发展起来的,可能有一些老的项目,还在用一些老的软件,比如svn
1.1版本管理发展简史(维基百科)
1.1.1 SVN(SubVersion)
工作流程
1 2 3 4
| SVN是集中式版本控制系统,版本库是集中放在中央服务器的. 工作流程如下: 1.从中央服务器远程仓库下载代码 2.修改后将代码提交到中央服务器远程仓库
|
优缺点:
1 2 3 4
| 优点: 简单,易操作 缺点:所有代码必须放在中央服务器 1.服务器一旦宕机无法提交代码,即容错性较差 2.离线无法提交代码,无法及时记录我们的提交行为
|
svn流程图

2. Git 的安装
2.1 git 的下载
下载地址: https://git-scm.com/download

3. git 流程
3.1 流程图

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

4.命令行– git基本操作
4.1 介绍
上述我们的操作 使用的 是客户端TortoiseGit 操作的git ,实际上底层依旧是使用的命令行帮我们执行, 在早期 git 并没有窗口化工具,开发人员只能使用命令行模式。
环境配置
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息
1 2 3 4 5 6 7 8
| #设置用户信息 git config --global user.name “itcast” git config --global user.email “itcast@itcast.cn” #查看配置信息 git config --list git config user.name #通过上面的命令设置的信息会保存在~/.gitconfig文件中
|
初始化本地仓库 init
1 2 3 4
| # 初始化仓库带工作区 git init # 初始化仓库不带工作区 git init --bare
|
克隆 clone
1 2 3
| # 从远程仓库克隆 git clone 远程Git仓库地址 例如: git clone https://gitee.com/itcast/gittest.git
|
查看状态 status
1 2 3 4
| # 查看状态 git status #查看状态 使输出信息更加简洁 git status –s
|
add
1 2 3 4 5
| # 将未跟踪的文件加入暂存区 git add <文件名> # 将暂存区的文件取消暂存 (取消 add ) git reset <文件名>
|
commit
1 2 3
| # git commit 将暂存区的文件修改提交到本地仓库 git commit -m "日志信息" <文件名>
|
rm
1 2 3 4
| # 从本地工作区 删除文件 git rm <文件名> # 如果本工作区库误删, 想要回退 git checkout head <文件名>
|
5. 命令行–git 远程仓库操作
5.1 查看远程
1 2 3 4 5 6 7
| # 查看远程 列出指定的每一个远程服务器的简写 git remote # 查看远程 , 列出 简称和地址 git remote -v # 查看远程仓库详细地址 git remote show <仓库简称>
|
5.2 添加/移除远测仓库
1 2 3 4
| # 添加远程仓库 git remote add <shortname> <url> # 移除远程仓库和本地仓库的关系(只是从本地移除远程仓库的关联关系,并不会真正影响到远程仓库) git remote rm <shortname>
|
5.3 从远程仓库获取代码
1 2 3 4 5 6 7 8 9
| # 从远程仓库克隆 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 (如上 命令)
1 2
| # 将本地仓库推送至远程仓库的某个分支 git push [remote-name] [branch-name]
|
6. 命令行– 分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 默认 分支名称为 master # 列出所有本地分支 git branch # 列出所有远程分支 git branch -r # 列出所有本地分支和远程分支 git branch -a # 创建分支 git branch <分支名> # 切换分支 git checkout <分支名> # 删除分支(如果分支已经修改过,则不允许删除) git branch -d <分支名> # 强制删除分支 git branch -D <分支名>
|
1 2 3 4 5 6
| # 提交分支至远程仓库 git push <仓库简称> <分支名称> # 合并分支 将其他分支合并至当前工作区 git merge <分支名称> # 删除远程仓库分支 git push origin –d branchName
|
7 . 命令行 –tag
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 列出所有tag git tag # 查看tag详细信息 git show [tagName] # 新建一个tag git tag [tagName] # 提交指定tag $ git push [仓库简称] [tagName] # 新建一个分支,指向某个tag $ git checkout -b [branch] [tag] # 删除本地tag $ git tag -d [tag] # 删除远程tag (注意 空格) $ git push origin :refs/tags/[tag]
|
`