✍目录总览:

1. Git基础
1.1 版本管理
1.1.1 什么是版本管理
版本管理是一种记录文件变化的方式,以便将来查阅特定版本的文件内容。

1.1.2 人为维护文档版本的问题
-
文档数量多且命名不清晰导致文档版本混乱
-
每次编辑文档需要复制,不方便
-
多人同时编辑同一个文档,容易产生覆盖

1.1.3 版本控制
- 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
- 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
1.1.4 版本控制工具
版本控制工具分为集中式版本控制工具与分布式版本控制工具
- 集中式版本控制工具
- CVS、SVN、VSS
- 集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
- 这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
- 事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

-
分布式版本控制工具
- Git、Mercurial、…
- 像Git这种分布式版本控制工具 ,客户端提取的不 最新版本的文件快照,而是把代码仓库完整地镜像下来 (本地库) 。这 样 任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行 恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份 。
-
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷 :
- 服务器断网的情况下也可以进行开发,因为版本控制是在本地进行的
- 每个客户端保存的也都是整个完整的项目 ,包含历史记录 更加安全

1.2 Git 是什么
-
Git是一个==版本管理控制系统==(缩写VCS),它可以在任何时间点,==将文档的状态作为更新记录保存==起来,也可以在任何时间点,将更新记录恢复回来。
-
Git是一个免费的、开源的分布式版本控制系统 ,可以快速高效地处理从小型到大型的各种项目
-
Git易于学习,占地面积小,性能 极快 。 它具有廉价的本地 库 ,方便的暂存区域和多个工作
流分支等特性。 其性能优于 Subversion、 CVS、 Perforce和 ClearCase等 版本控制 工具。

1.3 Git 安装
- 官网地址:http://git-scm.com/
- *在安装的过程中,所有选项使用默认值即可。
Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为==远程库==

1.4 Git 基本工作流程
git仓库 | 暂存区 | 工作目录 |
---|---|---|
用于存放提交记录 | 临时存放被修改文件 | 被Git管理的项目目录 |

1.5 Git 常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit m " 日志信息 " 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset hard 版本号 | 版本穿梭 |
1、Git 使用前配置:设置用户签名
在使用 git 前,需要告诉 git 你是谁,在向 git 仓库中提交时需要用到。
基本语法:
- 配置提交人姓名:
git config --global user.name 提交人姓名
- 配置提交人姓名:
git config --global user.email 提交人邮箱
- 查看git配置信息:
git config --list

并且在自己 C:\Users\Augenestern
下有个 .gitconfig
文件,打开里面就是我们设置的用户签名。
注意
- 如果要对配置信息进行修改,重复上述命令即可。
- 配置只需要执行一次。
- 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。
- 这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
2、初始化本地库(git init)
基本语法:git init

==3、====查看本地库状态(git status)==
基本语法:git status
- 首次查看,工作区没有任何文件

3.1、新增文件
语法:vim hello.txt
,然后按 i 键进入 INSERT,要想复制粘贴 ,需要先按 esc 键,之后 yy
复制,p
粘贴

文件内容输入完毕,需要先按:
,输入wq
,然后才算完成新增文件,再次查看
4、添加暂存区(git add 文件名)
基本语法:单个文件 git add 文件名
全部文件git add .
5、提交本地库(git commit -m 提交信息)
基本语法:git commit -m "日志信息" 文件名
6、修改文件
语法:vim 文件名
7、历史版本
7.1、查看历史版本(git log)
基本语法:
-
git reflog
查看版本信息 -
git log
查看版本详细信息
但是我们工作区的 hello.txt 始终只有一个文件存在
7.2、版本穿梭
语法:git reset --hard 版本号
8、切换版本原理
Git 切换版本,底层其实是移动的HEAD 指针,具体原理如下图所示
HEAD 指针指向 master 分支,master分支指向 first 版本

之后有了 second 版本,master 指针指向 second 版本

之后有了third 版本,master 指针指向 third 版本

==如果我们想穿越回去,只需要让 master 指针指向 first 版本或者 second 版本==
9、 撤销
-
用暂存区中的文件覆盖工作目录中的文件:
git checkout 文件
-
将文件从暂存区中删除:
git rm --cached 文件
-
将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:
git rest --hard commitID

网友评论