前言
介绍在工作中使用 git 工具
文章目录
- 前言
- 一、git 简介
- 1、是什么
- 作用
- 操作
- 3、用途
- 二、基本概念
- 1、工作区
- 2、暂存区
- 3、版本库
- 4、操作过程
- 三、基本命令操作
一、git 简介
1、是什么
git
是一个方便管理代码版本的工具,用一个树结构来维护和管理所有的历史版本;- 可持久化(可存储),可支持多人合作;
作用
git
用来管理仓库(文件夹)中所有的文件,其中文件中写的是代码;
操作
- 从起点开始,起点为初始版本,每个节点为一个版本;
- 每个节点都可以同时扩展多个分支,可以实现不同分支之间相互合并的操作;
- 可以实现回滚操作,即恢复到某一个历史版本;
3、用途
- 单人开发项目
- 回滚历史版本;
- 多人合作开发项目
- 云平台
- 存储历史版本,相互间同步代码;
- 个人每次修改的时候,从云端将最新的项目代码拉到本地,本地每次开一个新的分支来写,写完后再合并一起;
- 云平台
二、基本概念
1、工作区
- 当前的工作目录(当前所在的文件夹);
- 注意
- 工作区与分支要区分开,工作区只有一个,无论在哪个分支都只有一个工作区;
- 错误理解:每个分支上的每个节点都有一个独立的工作区;
2、暂存区
- 工作区与版本库之间的桥梁;
3、版本库
- 将所有的历史版本通过树结构的形式进行存储;
Head
指针,Head
指针每次只会处于一个历史版本节点;
4、操作过程
- 目的:实现将当前工作区的内容存储到版本库中;
- 做法
- 1)将当前工作区的内容添加到暂存区(每次认为自己写的代码有价值的时候,将其存放到暂存区);
- 2)在版本库中当前
Head
节点后面创建一个新的节点,将暂存区中的内容放到新节点中,同时Head
指针会往后移动一位;
- 注意
- 每次将工作区的内容放到暂存区中时,不会创建新的节点;
- 将暂存区中的内容存到版本库中时会新创建一个新的节点,并将
Head
后移一位; Head
指针可以进行分支的切换;
三、基本命令操作
-
登录服务器后,先设置自己的名字和邮箱;
- 配置完成后,名字和邮箱信息是记录在
.config
文件中;
- 配置完成后,名字和邮箱信息是记录在
-
创建项目
- 本地创建文件夹并进入(此时当前文件夹还是普通文件夹);
- 将当前所在目录的文件夹配置为一个仓库
- 仓库的概念:仓库的这个概念本质就是一个文件夹;
- 执行
git init
; - 此时所有信息存放到 .git 文件夹中
-
git add xxx:将当前 xxx文件的修改存到暂存区;
-
git status:查看工作区相对于暂存区的修改状态;
-
git commit -m “修改的描述”:将暂存区内容提交到当前本地版本分支的当前节点
- 目的:即将暂存区内容持久化
- 执行 commit 时包含的操作
- 在当前
Head
所指节点的创建下一个新节点; - 并将当前暂存区中的内容存储到新节点中;
- 同时
Head
指针指向到新节点的位置,并删除当前暂存区中的内容;
- 在当前
-
git diff xxx :比对当前工作区 xxx 文件中的内容与暂存区中 xxx 文件中内容的区别
-
git restore
- git restore --staged xxx:将 xxx 文件从暂存区中删除
- git restore xxx:对 xxx 文件的进行了修改,还没有加到暂存区,想删除 xxx 文件中的修改内容,恢复到暂存区中存储的版本(如果暂存区中没有内容,就恢复到 Head 指向的节点的版本)
-
git add . :当修改的文件很多的时候,将所有被修改过的文件全部加到暂存区
- 只有文件状态发生改变的文件才会被添加,如果文件没有修改,那么它就不会添加到暂存区
-
查看当前分支中的所有历史版本
- 概念
- 当前分支:从最初节点状态到当前 Head 指针指向节点的路径(只会看当前路径上的所有节点,方向是从下往上)
- 操作
- git log
- 只能打印从最初状态j节点到当前 Head 所指向节点上路径的版本
- 信息会显示在多行
- git log --pretty=oneline:将信息显示在一行
- 打印的是 HEAD 指针走过的所有节点的历史记录(可以找到每个节点版本的编号,每个节点版本都有一个编号)
- git log
- 概念
-
在当前分支进行节点回滚
-
概念
- 回滚历史版本的含义:将当前工作目录下所有的被管理的文件(文件内容)全部恢复到回滚到节点的状态
-
操作
- git reset --hard HEAD^
- git reset --hard HEAD~100
- git reset --hard 版本号