1,Git和SVN都是版本控制工具,那么他们得区别是什么呢?
- 1 ). Svn 特点 SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。 集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就郁闷了。 下图就是标准的集中式版本控制工具管理方式:
中央服务器作为一个版本控制中心,用户可以上传和下载最新版本进行迭代
优点:集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
集中式版本控制工具缺点很明显:
- 服务器单点故障
- 容错性差 Subversion原理上只关心文件内容的具体差异。每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。
2 ).git特点
Git是分布式版本控制系统;那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
分布式版本控制工具管理方式
从两者得图就可以看出最主要得区别了
svn必须有远程仓库服务器,而且只能通过远程仓库服务器作为中间站(即使是自己使用).
git得话,我们自己本地有自己得git仓库作为自己得版本控制,如果需要与他们建立共同得版本控制,也可以把自己得仓库同步到共享仓库里,他人可以从共享仓库克隆最新版本.
3 git工作流程一般工作流程如下:
1,从远程仓库中克隆Git资源作为本地仓库。
2,从本地仓库中checkout代码然后进行代码修改
3,在提交前先将代码提交到暂存区。
4,提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本。
5,在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库。
下图展示了Git的工作流程:
git常用命令流程
4. Git的安装
git官网自行下载.默认下一步下一步..安装就好
5.Git下载好了后
git安装完毕后右键菜单就多了俩选项,用来两方式操作git
- GUI可视化控制面板,可以创建和打开本地仓库,也可以克隆一个本地仓库
- git bash git命令行方式 这里看了别人用户工具挺好的,所以并不推荐用原生的,这里推荐大家用一下小乌龟TortoiseGit(找不到安装包和语言包的可以私信给我)
安装完毕右键又多了几个工具
6.工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
什么是工作区(Working Directory)?
工作区就是你在电脑里能看到的目录,比如我的reporstory文件夹就是一个工作区。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
如下图所示:我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
7.忽略不需要提交到git的文件
我们可以用小乌龟右键添加忽略文件,也可以用语法规范去约束.
忽略文件语法规范
代码语言:javascript复制空行或是以 # 开头的行即注释行将被忽略。
可以在前面添加正斜杠 / 来避免递归,下面的例子中可以很明白的看出来与下一条的区别。
可以在后面添加正斜杠 / 来忽略文件夹,例如 build/ 即忽略build文件夹。
可以使用 ! 来否定忽略,即比如在前面用了 *.apk ,然后使用 !a.apk ,则这个a.apk不会被忽略。
* 用来匹配零个或多个字符,如 *.[oa] 忽略所有以".o"或".a"结尾, *~ 忽略所有以 ~ 结尾的文件(这种文件通常被许多编辑器标记为临时文件); [] 用来匹配括号内的任一字符,如 [abc] ,也可以在括号内加连接符,如 [0-9] 匹配0至9的数; ? 用来匹配单个字符。
看了这么多,还是应该来个栗子:
# 忽略 .a 文件
*.a
# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a
# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO
# 忽略 build/ 文件夹下的所有文件
build/
# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt
# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf
exc1 Git命令基本操作
菜鸟教程的git基本操作命令
exc1 Git命令基本操作
菜鸟教程的Git 分支管理操作命令
8.关于git推送版本到远程仓库,实现云存储以及云版本管理
我这里一般用的是gitee,主要是相中了网速快...(没钱开外网进github...太慢了)
根据我们之前的流程图来看,其实就是把本地已提交的代码push到远程仓库.
具体可有看看https://cloud.tencent.com/developer/article/1923113
参考: https://www.runoob.com/git/git-tutorial.html https://www.cnblogs.com/Juning/p/12192111.html