什么是版本控制?
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了已录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。
目前的版本控制系统分为2种?
一.分布式版本控制器(git典型的分布式版本控制器)
优点:
1.适合分布式开发,强调个体。
2.公共服务器压力和数据量都不会太大。
3.速度快、灵活。
4.任意两个开发者之间可以很容易的解决冲突。
5.离线工作。
缺点:
1.资料少(起码中文资料很少)。
2.学习周期相对而言比较长。
3.不符合常规思维。
4.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
二.集中式版本控制器(svn典型的集中式版本控制器)
优点:
1.管理方便,逻辑明确,操作简单,上手快。
2.易于管理,集中式服务器更能保证安全性。
3.代码一致性非常高。
4.有良好的目录级权限控制系统。
缺点:
1.对服务器性能要求高,数据库容量经常暴增,体量大。
2.必须联网。如果不能连接到服务器上,基本上不可以工作,如果服务器不能连接上,就不能提交,还原,对比等等。
3.不适合开源开发。
4.分支的管控方式不灵活
这里讲解git分布式版本控制系统
什么是 GitHub?
GitHub 就担任了上述的远程仓库这一角色,就是一个存放在外网服务器上的一个文件夹。当然远程仓库除了 GitHub 之外,还有 Gitee(码云)。这里我们使用的是码云
具体步骤
一.下载
https://gitforwindows.org/ window下载git
下载完成,所有选项默认安装就好
打开
输入以下命令:
设置自己的用户名和邮箱
$ git config --global user.name “Name” (设置用户名)
$ git config --global user.email "xxxxx@xxxxx.com" (设置常用邮箱,最好与guihub用的邮箱一致)
因为Git是分布式版本控制系统,设置你的名字和Email地址。 注意git config命令的**–global**参数,用了这个参数,表示你这台机器上所有的Git仓库都 会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址
创建版本库
版本库又称创库,这个目录里面的所有文件 都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
选择一个文件夹下,将其改造成功创库
git init命令把这个目录变成Git可以管理的仓库:
这是一个空的仓库,当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,不要手动修改这个目录里面的文件会破坏Git仓库。 如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。 也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。
把文件添加到版本库中。
所有的版本控制系统,只能跟踪文本文件的改动,比如TXT文 件,网页,所有的程序代码等等,Git也不例外。而图片、视频这些二 进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,版本控制系统不 知道改了什么。
Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,如果要真正使用版本控制系统就要以纯文 本方式编写文件。 烈建议使用标准的UTF8编码,所有语言使用同一种编码,既没有冲突,又被 所有平台所支持。
使用方式
创建一个test.txt文本,并在其内容添加hello java
1.用命令git add告诉Git,把文件添加到仓库:
$ git add test.txt (添加指定的文件) 或者 $ git add . (添加所有的文件)
无信息显示。这添加并不会有信息显示
如果想看看你变化使用git status命令
创建的新文件,未添加查看状态文件名称会出现红色
**2.用命令git commit告诉Git,把文件提交到仓库: **
$ git commit -m “name”
-m后面输入的是本次提交的说明,可以输入任意内容,最好是有意义的,方便从历史记录地找到改动记录。
3.工作区与暂存区的区别 (重点)
**工作区:**就是当前目录下,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者新建的目录文件等等都属于工作区范畴。
**版本库(Repository):**的工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。
stage(暂存区): 其中 版本库里面存了很多东西,其中最重要的就是stage(暂存区)。
我们使用 git add 把文件添加,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,就是把暂存区的所有内容提交到当前分支上。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
码云的使用
官网地址:https://git.oschina.net/ 注册/登录
登录成功后
1.创建一个代码仓库
2.进去仓库,点击管理
3.添加公钥,需要本地创建公钥
如何生成公钥 $ ssh-keygen -t rsa -C "xxxx@xx.com" 一路Enter下去
获取公匙 $ cat ~/.ssh/id_rsa.pub
4.拉取项目,克隆/下载,弹出一个框,选择ssh方式clone代码
5.远程拉取项目
git clone命令 刚在码云上复制的ssh
如下成功拉去到本地
6.开始编码(对拉去下来的文件进行操作)
创建一个java文件
7.提交项目 一个好习惯,不管这个项目多少人参与,push之前先pull一下,看看有没有merge的代 码,有merge解决merge,没有的话直接下面的命令
git pull origin master
git add .
git commit -m ‘java文件’
git push origin master
如下提交成功!(时间1小时前,是因为吃了个饭在截的屏)
流程: