版本控制系统
使用传统的方法,用文件来记录版本,很麻烦,经常要回滚、反复改等。
不使用版本控制系统
如果使用版本控制系统,可以有 Hash 算法来给每一个版本命名。
使用了版本控制系统
使用版本控制系统之后,就方便对比、恢复等。可以轻松地对比每个版本之间的改动有哪些。(不只是相邻的版本,可以对比任意的两个版本。)
版本控制系统的有优点
- 协同合作
- 版本存储
- 恢复之前的版本
- 了解每一次改动
版本控制系统的分类
集中式
最早是集中式版本控制系统,以 Subversion 为例。项目的参与者使用客户端连接到中心服务器,从服务器下载内容(updata)、向服务器提交改动(submit)。
这类似于萌娘百科、百度百科等。
如果中心服务器出问题了,那么会有很严重的后果。譬如中心服务器宕机一个小时,那么这个时候所有的参与者无法 updata 或 submit。
分布式
分布式版本控制系统是当前的主流。每一个参与者都在本地留有一份完整的版本记录。仍然有一个远程服务器。
- Push 向远程服务器推送自己的版本。
- Pull 从远程服务器拉取一个版本。
- Commit 提交到本地的版本。
当下最流行的分布式版本控制系统是 Git。(并不特指 GitHub)
仓库与克隆
仓库:可以想象中是一个文件夹、一个目录。这个文件夹内中的任何内容(比如代码、图片、文档)发生变更,都会被版本控制系统察觉。
仓库有本地仓库和服务端仓库(云仓库、远程仓库)。使用克隆(Clone)命令,从服务端仓库获取一份保存到本地仓库。
克隆≠下载。使用下载是不包含变更记录的,也不能方便推送到服务端仓库。下载更像是一次性的。
工作区、暂存区
- 在工作区中修改文件
- 将想要提交的改动添加至暂存区
- 将暂存区的文件提交至 Git 目录
分支与合并
分支成多个不同的版本。合并(merge)将所有的改动合在一起。
push 只能领先于服务端仓库,不能落后于它。
使用命令行操作
克隆
使用指令git clone
来克隆既有的远程仓库。参数为各仓库平台提供的 SSH 地址或 HTTPS 地址。会克隆到当前目录。譬如当前文件夹是C:\
,仓库名字叫做a
,那么会被克隆到C:\a
。
初始化
cd
转移到仓库所在的文件夹,使用git init
进行初始化,会生成.git
文件夹(隐藏文件夹)。
添加到暂存区
使用git add
将工作区的改动添加到暂存区。参数为需要添加的文件,使用相对路径.
表示当前文件夹下所有的内容。
提交
使用git commit
进行提交,是提交到本地。可以使用-m
参数添加消息。例如
git commit -m "this is a commit"
上传
使用git push
将本地的仓库上传至远程仓库。
使用 IDEA 操作
克隆
File - New - Project from Version Control 菜单,从版本控制系统中克隆。
image.png
填写 URL:
image.png
要求登录账号密码。之后则克隆好仓库。
提交
在 IDEA 右上角点击绿色√按钮进行 commit。
IDEA commit
上传
在 IDEA 右上角绿色↗按钮进行 push
IDEA push
网友评论