## 版本、版本管理与版本管理软件
* 版本是记录特定对象各个可选状态的快照
* 版本管理的任务就是对对象的历史演变过程进行记录和维护
* 版本控制软件提供完备的版本管理功能,用于存储、追踪目录和文件的修改历史的工具软件。
## 版本管理的应用场景
版本管理在很多场景都会有,随着软件的兴起和蓬勃发展而迅速发展,成为软件开发中协同工作的必备工具。
#### 单人工作版本管理的需求:
对一篇短文或是诗歌进行修改,改动记录和历史或许不是很多,但是,如果是写一篇大的论文,类似毕业论文,从开题到最后论文提交,这中间有多少改动, 比如说写一篇 "论Git"的论文, 往往在论文结束的时候,磁盘里有很多版不同名字的文件: 论Git, 论Git-导师修改版,论Git-提交版,论Git-提交修改版,论Git-答辩版,论Git-答辩修改版,论Git-终极版,...; 还有的命名直接是:论Git-V1,论Git-V2,... 论Git-Vn。旧的版本也有价值,不能删除。这么多版本,作者自己也经常搞不清,以至于在论文后期把错误版本的论文进行了提交。而且,幸运的通过了论文答辩,有其他人请假经验的时候,有点茫然,因为整个过程有点紧张,大部分的时间节点和过程都遗忘了。如果有版本控制软件, 记录整个修改过程, 并记录一些当时的心得,这些问题就完美解决了。
#### 多人协作下版本管理的需求:
很难想象如果没有版本管理,在软件开发中,多人协作该如何进行。是谁提交的代码不知道,什么时间提交的代码不知道,多个人对同一个文件修改,总会发现改动被别人覆盖。
## 版本管理工具的基本功能
版本管理工具基本上具有以下功能:
1. 记录历史
记录文件修改的时间、提交人。
2. 版本回退
回退到某个时间点
3. 团队协作
能处理多人同时修改的问题,不同的软件的操作方式有一些差异。
4. 分支与合并
#### 版本管理工具的发展阶段
版本管理工具的发展大致经过了四个阶段:
1. 早期的rcs
2. 集中式的CVS,VSS, Perforce,SVN 多分天下
3. 再到bitkeeper分布式
4. git一支独霸
发展的历史图谱如下:
![](https://box.kancloud.cn/fdbbd94c94656c326d398ada69353db9_818x380.png)
- 前言
- 第1章 概念篇
- 1.1 版本控管的概念与历史
- 1.2 Git概述
- 1.3 Git 安装
- 1.4 工作区、暂存区和版本库
- 1.5 本地库与中央库
- 1.6 Git术语汇总
- 1.7 GitHub
- 1.8 裸仓库
- 第2章 基于本地库的操作
- 2.1 初始化库
- 2.2 提交代码
- 2.3 日志查看
- 2.4 差异比较
- 2.5 提交撤销
- 2.6 删除文件
- 第3篇 中央库命令及操作
- 3.1 中央库搭建
- 3.1.1 SSH协议中央库搭建
- 3.1.2 SSH协议中央库搭建问题解决
- 3.2 推送远端库
- 3.3 冲突处理
- 第4章 进阶篇
- 4.1 分支与合并
- git整合分支的两种方式 merge 和 rebase
- 最简单的git merge 和git rebase 区别介绍和示例演示
- git merge 合并
- git rebase 变基
- 取消merge
- 4.2 标签
- 4.3 忽略不需要控管的文件
- 4.4 Git工作流程
- 4.5 HEAD 究竟是什么?
- 4.6 .git实现原理解密
- 4.7 代码拉取与提交
- 4.8 查看提交记录
- 查看前一个月提交记录
- 4.9 git reset 和 git revert的区别和适用场景
- 第5章 命令与工具篇
- 5.1 Git常用命令一览
- 5.2 Git命令索引
- git clone
- git init
- git checkout
- git revert
- git reset
- 5.3 Git GUI使用
- 5.4 Git 可视化工具
- 第6章 实战篇
- 6.1 GitHub使用介绍
- 6.2 代码覆盖与冲突解决
- 6.3 Clone项目到非空目录
- 6.4 检出指定的目录-稀疏检出
- 6.5 单个文件的回退
- 回退到指定版本
- 提交丢失场景
- 6.6 常用命令
- 6.7 分支合并
- 最简单最常见的Merge
- 取消单个文件的自动merge
- Excel 文件合并处理
- Pull request
- Bitbucket Pull request
- 分支合并之git merge ,git rebase
- 6.8 已控管文件去除版本控管
- 6.9 本地非空目录与远端库对应
- 6.10 如何使用Gitee 控管代码
- 6.11 提交和分支等记录查询
- git log 提交日志及图形化显示
- 6.12 Linux/Windows 免输密码
- 6.13 嵌套目录的代码控管
- 6.14 从远端Tag新建分支并提交到远端
- 6.15 从本地库撤销已经添加的文件或目录
- 6.16 远端库回退
- 神鬼不知之Git远端库回退更改
- 6.17 merge 之后使用git checkout会导致修改丢失吗
- 6.18 将Git远程仓库中的项目迁移到另一个远程库, So easy
- Git 切换Origin
- 第7章 常见问题及解决
- 7.1 Not a valid object name: ‘master’
- 7.2 error: Pulling is not possible because you have unmerged files.
- 7.3 SSL certificate problem
- 7.4 fatal: ambiguous argument 'HEAD^'
- 7.5 You have not concluded your merge (MERGE_HEAD exists)
- 7.6 Please commit your changes or stash them before you merge.
- 7.7 error: path 'xxx' is unmerged
- 7.8 unable to get local issuer certificate
- 7.9 github 无法取code之WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!问题解决
- 问题收集
- git clone 出现 SSL certificate problem: self signed certificate in certificate chain 问题怎么解决
- This branch is out-of-date with the base branch Merge the latest changes from main into this branch.
- 第8章 快速使用
- 快速
- 参考