文章目录
-
- 一、版本控制系统分类
-
- 1. 版本控制系统的概念
- 2. **本地版本控制系统**
- 3. **集中式版本控制系统**
- 4. **分布式版本控制系统**
-
- **Git**
- 二、版本控制软件使用简明教程
-
- 1. 集中式版本控制系统 -SVN
- 2. **分布式版本控制系统**
-
- 把文件添加到版本库
- *工作区(Working Directory)*
- *版本库(Repository)*
- 小结
一、版本控制系统分类
1. 版本控制系统的概念
版本控制是指在软件开发过程中对各种程序代码、配置文件及说明文档等文件变更的管理,版本控制系统能够随着时间的推进记录一系列文件的变化,方便以后随时回退到某个版本。版本控制系统分为三大类:
2. 本地版本控制系统
平时开发不使用版本控制系统的情况下,我们习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这种方式需要对项目频繁进行复制,最终整个工作区会比较臃肿混乱且时间一长很难区分项目之间的差异。
为了解决这个问题,人们开发了本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。最流行的是RCS,它的工作原理是在硬盘上保存补丁集(补丁指文件修订前后的变化),通过应用所有的补丁,可以重新计算出各个版本的文件内容。
本地版本控制系统一定程度上解决了手动复制粘贴代码的问题,但无法解决多人协作的问题。
当然还有更加原始的方法,每次都保存所有源代码的文件夹。
3. 集中式版本控制系统
集中式版本控制系统的出现是为了解决不同系统上的开发者协同开发,即多人协作的问题,主要有 CVS 和 SVN。集中式版本控制系统有一个单一的集中管理的中央服务器,保存所有文件的修订版本,由管理员管理和控制开发人员的权限,而协同工作的人们通过客户端连到中央服务器,从服务器上拉取最新的代码,在本地开发,开发完成再提交到中央服务器。
Git
Git 是 Linux 发明者 Linus 开发的一款分布式版本控制系统,是目前最为流行和软件开发着必须掌握的工具。
二、版本控制软件使用简明教程
这边主要介绍两个软件的使用,分别是SVN和git,分别属于集中式版本控制系统和分布式版本控制系统。
1. 集中式版本控制系统 -SVN
SVN的安装可以参考这篇博客:SVN下载、安装、配置及使用方法
具体使用方法如下
打开SVN的服务器端,可以在这边新建仓库,新建用户。
将服务器的代码同步到本地仓库。
2. 分布式版本控制系统
直接安装git即可。
选择需要管理的文件夹,右键,选择 Git Bash Here或者Git GUI Here即可。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
删除文件
现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:
$ git rm test.txt
rm ‘test.txt’
$ git commit -m “remove test.txt”
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
现在,文件就从版本库中被删除了。
小提示:先手动删除文件,然后使用git rm 和git add效果是一样的。
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout – test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库(两个仓库的名称一样)
现在,我们根据GitHub的提示,在本地的learngit仓库下运行命令:
$ git remote add origin git@github.com:michaelliao/learngit.git
请千万注意,把上面的michaelliao替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
* [new branch] master -> master
Branch ‘master’ set up to track remote branch ‘master’ from ‘origin’.
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
小结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
上次我们讲了先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
首先,登陆GitHub,创建一个新的仓库,名字叫gitskills:
现在,远程库已经准备好了,下一步是用命令git clone克隆一个本地库:
$ git clone git@github.com:michaelliao/gitskills.git
Cloning into ‘gitskills’…
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8594 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!