目录
- 版本控制
- 安装
- 配置
- 理论部分
- 项目创建及克隆
- 创建全新仓库
- 克隆远程仓库
- 文件操作
- 理论
- 实操
- 使用码云
- 分支与冲突
- 实操说明
- 遇到的问题
- vscode配置问题
- vscode克隆慢的问题
- 后记
版本控制
概述:
版本迭代,更新速度快,于是需要版本管理器。
作用:
跨区域多人协同开发、追踪文件历史记录、保护源代码和文档、统计工作量、并行开发提高效率、跟踪记录整个软件开发过程、减轻负担节省时间降低错误…
常见工具:
Git,SVN等等。Git相对来说较流行。接下来我们看看它们的特点及区别:
Git与SVN介绍:
SVN是集中版本控制,所有版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改;
Git每个人都拥有全部代码,这样就可以在本地查看所有版本历史,也可离线在本地提交,联网后就可以push到服务器或者其他用户那里。且只要由一个用户的设备没有问题就看可以恢复所有数据,但是本地存储空间也被占用。
但是不会因为服务器损坏而造成不能工作的情况。(巨大好处)
Git和SVN区别:
SVN集中式版本控制,版本库是集中放在中央服务器的,工作的时候,用自己的电脑,从服务器得到最新版本然后工作,完成工作后推送到中央服务器。必须联网才能工作。
Git是分布式版本控制,没有中央服务器,每个人的电脑都是一个完整的版本库,工作不需要联网,协同时,同一个文件两个人改,两个人只需要互相推送给对方,就可以看到对方的修改了。
Git是目前世界上最先进的分布式版本控制系统。
安装
首先是下载,可以在官网下对应的。
但是官网很慢,所以我们可以靠tb镜像:
tb镜像下载git
下最新版,根据自己电脑的情况,比如我是64位我就下64的。
下载完毕后直接一路默认。选编译器那块,可以选自己用的,如vim、vscode。
下载完后桌面单机右键可以看到:
有以上两个其实就是安装成功了。
其中,GUI是图形界面,不适合初学者;一般我们都用的是上面的Bash,点击后会进入命令行输入框。
配置
打开Git Bush
可以查看git中的所有配置:
$ git config -l
配置用户名和密码:
git config --global user.name "名称"
git config --global user.email "邮箱"
查看当前用户配置
git config --global --list
理论部分
Git本地有三个工作区域:工作目录、暂存区、资源库。加上远程的git仓库(Remote Directory)就是四个工作区域。关系如下:
Workspace:工作区,你平时存放项目代码的地方;
index/Stage:暂存区,用于临时存放改动的地方,事实上它只是个文件,保存即将提交的文件列表信息;
Repository:仓库区(或本地仓库),安全存放数据的位置,这里面有提交所有版本的数据,其中Head指向最新放入仓库的版本。
git工作的流程:
在工作目录中添加、修改文件->
将需要进行版本管理的文件放入暂存区域->git add
将暂存区域的文件提交到git仓库->git commit
推送到远程仓库。 git pull
因此,git管理文件有三种形态:已修改、一咱群、已提交。
项目创建及克隆
git要记住的是如下6个命令:
重点记住add、commit、push。
如果我们要创建本地仓库有两种方式:一种是创建全新的仓库,另一种是克隆远程仓库。
创建全新仓库
需要用到git管理的项目的根目录执行。
我设置了一个空的文件夹:
接着,右键选择Git Bash,进行初始化:
$ git init
初始化后会出现一个.git文件,但是这个文件是默认隐藏的,需要设置取消隐藏才能看到:
克隆远程仓库
如果在远程仓库上有项目,可以使用进行克隆:
$ git clone url
但是需要注册github或者gitee账号,在项目里面可以找到clone。
文件操作
理论
版本控制本质上是对文件的版本控制。要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,才能确定下一步对文件的操作。
文件的状态有以下四种:
Untracked:未跟踪状态,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add状态会变为暂存态(staged);
Unmodify:文件已入库,未修改,版本库中文件快照内容与文件夹完全一致,这种类型要么就是变为被修改,要么就是被移除版本库成为第一种状态下的文件;
Modified:文件已修改,仅仅是修改,并没有进行其他操作,这个文件也有两个去处,通过git add添加到暂存区,或者使用git checkout则丢弃修改过,这个git checkout即从苦衷取出文件,覆盖当前修改。
staged:暂存状态,执行git commit则将修改同步到苦衷,库中文件和本地文件又变为一致,文件为入库状态。执行git reset head filename取消暂存,文件状态为修改状态。
如何查看文件状态?介绍一条语令:
$ git status
作用:
git status 命令用于显示版本库和暂存区的状态。它允许我们看到被追踪的、未被追踪的文件和变化。这个命令不会显示任何提交记录或信息。
大多数情况下,它是用来显示Git Add和Git commit命令之间的状态。我们可以检查更改和文件是否被跟踪
实操
现在我们来实操,还是刚刚新建的文件夹,我们来用一下刚刚学习的git status指令,最后的结果是:
现在我们创建一个新的文件:
再用这条命令试一下:
现在已经显示文件了,不过文件还是一个未跟踪=的状态。
我们现在来把它放到我们的暂存区:(注意后面有个.)
$ git add .
再利用git status查看下:
意思是暂存区有文件啦。
接着我们把它提交到本地仓库:
git commit -m “消息内容”
这里一定要有-m,-m的作用是message,是提交信息:
接着我们再看看状态:
截止到目前位置,新的文件已经保存在了本地仓库。
使用码云
github有墙,==国内推荐gitee。==公司有的时候也会搭建自己的git服务器。(gitlab)
1.本教程使用gitee。首先,注册信息。(百度上搜官网即可)
2.登录后,我们设置本机绑定SSH公钥,实现密码免登录!(免密码登录,这一步很重要,因为码云是远程仓库,我们平时工作在本地仓库)
我们先来配置下公钥。
现在在本机生成下公钥,找到自己电脑中的目录:
C:\user\Administrator\.ssh
是个空文件夹。在这个文件夹使用git Bash,输入命令:
ssh-keygen -t rsa
在这个命令中,-t rsa是官方的一种加密算法。
注意,一直点回车:
点完之后,就会发现文件夹多了两个文件:
这就是公钥。
接着复制公钥内容(下面那个文件),来到gitee网站:
点击设置:
左侧导航里面:
点击SSH公钥:
在公钥中把刚刚复制的粘贴上去,点击确定:
以上就已经把码云上的仓库与本地仓库绑定了。
3.创建一个自己的码云仓库:
点击后填写详情信息,私有对外不可见,公开所有人可见。公开需要开源许可证,也就是一些规则,开源是否可以随意转载,开源但是不能商业使用等等限制。
现在我们让我们本地的仓库与码云仓库关联,首先复制码云仓库中的url:
在文件夹中使用
git clone 地址
做完后会发现现在这个仓库和本地是一致的。
其实就是已经建立起链接了。
4.生成基本代码,上传代码到码云:
一开始没有代码,可以自动生成一些代码:
上面代码的生成会有提示的。
接着,我们可以在本地pull以下,同步一下:
现在我们自己写一个文件:
接着,在git bash中,先查询,再添加到暂存区,接着添加到本地仓库,最后上传到码云,然后和码云同步 。这个步骤我将在下面详细演示一下,包括代码和结果。
查询现在的情况:
$ git status
添加到暂存区:
$ git add .
接着status一下:
然后再提交到本地仓库:
$ git commit -m “new file 文件名"
status一下:
最后我们再push到码云:
git push
接着我们来看一下码云:
最后再同步一下,也就是拉取代码,然后同步到本地:
git pull
来看一下本地的代码:
以上就是与git有关的相关操作,掌握这些基本使用是没有问题了。
分支与冲突
如果一个项目正准备开发上线,突然一个bug过来解决不了,或者是发现了根源上的问题,很容易耽误上线。所以,项目可以有几个版本,一个稳定版本,一个修改版本等等。
稳定版本不作更改,只用于上线,其他版本可以用作更改,也可也一个人一个版本进行更改。
这里先来看一下分支的有关命令:
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但仍然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout 0b [branch]
# 合并指定分支到当前分支
$ git marge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push orgin --delete [branch-name]
$ git branch -dr [remote/branch]
实操说明
查看当前分支(只有个主分支master):
新建分支(开发分支)
再次查询:
多个分支并行执行会导致代码不冲突,同时存在多个版本。
现在我们说一下合并,如果A有一段代码需要更改,A在自己的分支里面更改,B在自己的分支里修改A的代码,修改完毕后A把B的代码合并了,就会产生冲突。
如果冲突,就需要协商即可。
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的分支dev上工作,工作完后,准备发布,可以合并奥master分支上来。
遇到的问题
vscode配置问题
笔者是做前端的,一般情况下,前端主要用到的编辑器vscode上是可以集成开发的,只需要配置git的git.exe地址即可。
但是如果不小心关闭了内置的git,没办法在扩展中下载。这个时候,没必要卸载,只需要下载类似这种图标的插件,git会自动被打开。
vscode克隆慢的问题
自己开发的项目,或者是克隆别人的项目,有的时候会一直停留在克隆的状态,取消的话就算克隆失败了。
这种情况,往往是项目设置的问题,而且问题很多,所以一般的解决办法,是不坚持用vscode,而是用GUI Bash的语句进行操作。
后记
本篇文章内容比较全面,中间也有很多我踩过的坑,都在上面避雷了,希望对大家有帮助。