前情概要
在开发工作中经常会使用到Git 和 GitHub , 那这两者的区别是什么,以及如何使用,今天这篇文章就来一起学习一下。
Git
Git 是什么?下面是从几个大佬网站的不同描述。
[廖雪峰](Git简介 - 廖雪峰的官方网站 (liaoxuefeng.com))
[菜鸟教程](Git 教程 | 菜鸟教程 (runoob.com))
整体来看Git就是一个分布式的版本控制系统。
拆分开来理解一下,分布式表示Git并不是依赖于单台电脑存放数据,这是Git的优势之一;
1、单台电脑存放数据如果出问题,数据安全性是得不到保障的,也称为单点故障。其实也有一款软件叫SVN就是
集中式的版本控制软件
2、此外版本控制系统表示Git的主要功能式是可以管理版本控制。
那什么是版本控制呢?
当工作需要协同的时候,一份文档可能被多个人修改了,如果想回到文档某个时间点的状态是比较困难的
但是如果有版本控制的功能,那就会简单许多。
Git 有哪些优点呢?
大部分操作在本地完成,不需要联网
完整性保证
Git 采用Hash算法进行加密,可以校验数据是否完整
尽可能添加数据而不是删除或修改数据
分支操作非常快捷流畅
与 Linux 命令全面兼容
Git是linux之父开源,所以在兼容linux命令上有很好的表现
Git 作为一款分布式的版本控制系统应该有哪些功能呢?
协同修改
多人并行不悖的修改服务器端的同一个文件。
数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。
这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。
权限控制
对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。
历史记录
查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。
分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
接下来就是Git的安装了
这是Git的官网,可以按照自己电脑的操作系统进行安装包的下载
Git (git-scm.com)
(推荐)当然也可以在阿里镜像网站进行下载,速度会得到大幅度提升
CNPM Binaries Mirror (npmmirror.com)
安装好了之后,我们来聊一聊Git的结构
graph TD
工作区 --> 暂存区 --> 本地库
以上三层和Git的使用有什么关系呢?
本地库是文件最先产生的地方 通过 git add 命令可以把文件提交至暂存区
暂存区是文件第二个被同步的地方,由本地库提交,同时也可以撤回至本地库。并且可以通过
git commit 命名提交至工作区
工作区是最终文件呈现的地方
下面是Git的具体操作内容
-
当下载好Git之后,第一步需要做的是对Git本地库进行初始化
1、 找到一个空的文件夹,右键,选择 -- Git Bash Here 会在当前地址打开Bash编辑器 2、 输入 git init 会生成一个本地库文件夹 .git 注意:不要改动此文件夹,否则后续可能影响使用 -
对Git设置签名
为什么需要设置签名? 因为Git是需要多人协助的,设置签名可以辨识不同开发人员的身份便于版本管理 如何设置签名 Git签名分为 项目级别/仓库级别:仅仅在本地库范围内有效 git config user.name tom git config user.email good@123.com cat ./.git/config 通过此命令可以查看项目级别账号详情 系统用户级别:登陆当前操作系统的用户范围 git config --global user.name tom git config --global user.email good@123.com ~/.gitconfig global级别账号详情 级别优先级:项目级别优先度更高,两个级别都没有签名是不被允许的 一般来说,只会设置一套系统级别的账号体系,供所有项目使用 -
对Git进行使用
1、Git 的状态查询、日志查询
git status 查看工作区,暂存区状态 git add [file name] 将工作区 操作 添加到暂存区 git commit -m "commit message" [file name] 将暂存区的内容提交到本地 git log git log --pretty=oneline git log --oneline (最简单) 查看历史记录的不同显示风格 git reflog 会显示 HEAD@{移动到此版本需要多少步}2、如何控制Git进行版本的前进后退
版本前进后退的本质在于:当提交了多个版本,Git会保留所有的版本,并且提供一个指针;指针指向 的版本就是,需要的版本。 以下是两种控制指针的方式 1、基于索引值操作[推荐] git reset --hard [局部索引值] git reset --hard a6ace91 2、使用^符号:只能后退 git reset --hard HEAD^ 注:一个^表示后退一步,n 个表示后退 n 步 3、使用~符号:只能后退 git reset --hard HEAD~n 注:表示后退 n 步 比较reset的三个参数 hard 、 soft 、 mixed hard 仅仅在本地库移动 HEAD 指针 mixed 在本地库移动 HEAD 指针 并且重置暂存区 soft 在本地库移动 HEAD 指针 并且重置暂存区,重置工作区后面,我们将继续进行Git的介绍