Git版本控制系统---本地操作(万字详解!)

目录

git基本配置

认识工作区、暂存区、版本库

添加文件--情况一:

添加文件-情况二:

修改文件:

版本回退:

git基本配置

1.初始化本地仓库,注意:一定要在一个目录下进行,一般都是新建一个文件夹,在文件夹中进行下文操作
指令:git init
2.初始化git的提交用户+邮箱
2.1:配置用户名:git config user.name "gitee的用户名||github用户名"
注意!,如果是gitee,你的用户名是@后面的字符串,不包括@!
2.2:配置邮箱:git config user.email "gitee/github绑定的邮箱地址"
3.查看当前路径下本地仓库的配置信息
指令:git config -l
4.重置配置信息
4.1:重置姓名:git config --unset user.name
4.2:重置邮箱:git config --unset user.email
5.将当前机器上所有的用户都配置相同的用户和密码
指令:git config --global user.name "gitee的用户名||github用户名"
指令:git config --global user.email "gitee/github绑定的邮箱地址"
注意:通过--global选项配置的账户信息是不能直接通过上述第4条说明中的指令重置的!!需要的指令如下:
重置用户名:git config --global --unset user.name
重置邮箱:git config --global --unset user.email

补充:1.gitee用户名位置:再次提醒:不要带上@!!!!!!!!!不要带上@!!!!!!!!!不要带上@!!!!!!!!!

2.查询giteer账号绑定的邮箱:在gitee主页(即上述图片界面),鼠标移动到右上角头像处,会有一个设置选项,点击,左边列表中有一个邮箱管理,点击后就能看到当前gitee账号绑定的邮箱

认识工作区、暂存区、版本库

cpp 复制代码
在本地仓库目录中,创建一个Readme文件,注意!不能直接在.git中创建!禁止一切手动修改.git的操作
版本库:-->.git文件
工作区:-->Readme所在目录下,但不包括.git文件
暂存区:-->版本库的stage模块,又称索引
add操作
将工作区被修改的部分提交到暂存区stage
commit操作
将暂存区stage中的内容提交到某个分支,默认master分支

简易流程图:

添加文件--情况一:

cpp 复制代码
概念补充:.表示当前路径  ..表示上一级路径
1.先前面创建的Readme文件中写点东西,比如"hello git!"
2.提交方式
    将工作区的内容提交到暂存区
    2.1:提交指定工作区指定内容
    指令:git add 带路径的文件名(不带路径会默认为当前路径中的文件)
    可以连续带多个文件名,之间使用空格隔开:git add file1 file2...
    2.2:提交当前目录下所有的内容
    指令:git add .
    将暂存区内容提交到master分支
    2.3:命令后可以带选项,例如 -m 表示提交内容的同时携带对提交内容的说明信息,
         方便记忆:其实-m就是message的缩写
    指令:git commit -m "说明信息"
    注意:执行commit命令之前一定要先add过,并且使用commit指令一定要带上-m选项!!
    查看git的历史提交记录:
    指令:git log
    优雅的查看历史提交记录:
    指令:git log --pretty=oneline

添加文件-情况二:

1.先在工作区创建1个文件,test1.txt
依次执行以下指令:
1.1:git add test1.txt
1.2:Linux机器:touch test2.txt
windows机器:直接鼠标创建test2.txt
1.3:git commit -m "test1.txt add"
观察现象,显示有几个文件提交了?只有1个!就是test1.txt

修改文件:

Git追踪的是工作区的修改,而不是文件本身!

当我们对已经commit过的工作区文件进行修改时,比如,打开之前创建的Readme文件,新增一行数据,比如新增"hello mygit!"
查看git状态的指令:
指令:git status
Linux上显示如下:

但是如果我想看到更详细的内容,比如:想知道是哪几行修改了,是增加还是删除?

指令:git diff 工作区被修改的文件名

Linux上显示如下,windows大差不差:

windows会更直观,不再赘述。

bash 复制代码
Readme文件被我们修改了,那么按照之前所说的,先add到暂存区,再commit到master分支
指令: 
    1.git add Readme
查一下:
    2.git status
 提示你,.git中的statge已被改变,需要commit到mater分支
    3.git commit -m "update Readme"
再查一下:
    4.git status
显示工作区和暂存区都无改动了
done

版本回退:

什么是版本回退?举几个栗子:

1.就像是你在烹饪一道复杂的菜肴时,突然发现自己加错了调料,然后决定"时光倒流", 回到加调料前的那一刻,重新来过。

2.想象一下,你正在编写一个超级英雄的故事,你已经写到了"超级英雄打败了大反派,拯救了世界!"这一章。 但是,你突然意识到,在之前的某一章里,你给超级英雄加了一个奇怪的能力,比如"只剩一滴血也能重生", 这个能力实在是太奇葩了,完全破坏了故事的整体氛围。 这时,Git版本回退就派上用场了。你可以使用Git的"时光机"(其实是一些命令), 回到那个添加奇怪能力的章节之前,然后就像那个能力从未存在过一样,继续你的创作

3.你正在准备毕业论文,第一版写完后交给老师,老师不满意,于是你哼哧哼哧的修改好了第二版论文, 此时你兴高采烈的又交给老师,老师说你的第二版论文格式有问题,内容也偏题了,回去重写,好吧, 于是你垂头丧气的又回去改了第三版论文交给老师,老师对着你说:"小明啊,你还是把第一版论文交给我吧, 你这几版还不如第一版呢!",你听到这话,心里非常庆幸,因为你将每一版论文都进行过备份,于是你找到 第一版备份交给了老师,成功通过,顺利毕业;

回归正题:

之前我们经常上面使用的Readme文件最开始只有一行内容"hello git!";add+commit之后,这就是第一版的Readme文件,之后我们又增加了一行内容"hello mygit!",add+commit之后就是第二版Readme文件

bash 复制代码
版本回退:
    指令:git reset [--soft] [--mixed] [--hard] [HARD]
注意:此处的[HARD]指的是git提交记录中用看标识提交ID的字符串哈希编码,如何查看HEAD?
前面提到过指令:git log --pretty=oneline
打印出来的左侧的字符串编码即是每次提交的HEAD

列个表格辅助理解:

首先,最后一版的Readme内容为"hello git!" 和"hello mygit"

bash 复制代码
reset命令不带选项默认为--mixed
版本回退实操:
    指令:
    1.查看一下git提交日志:git log --pretty=oneline
    2.根据HEAD选择要回退的版本
cpp 复制代码
此处我选择回退至第一版,采用--hard选项
指令:git reset --hard d2c9915d4d2a5ca706c0e31de9df62a47796b944
回退之后,查一下git提交日志,显示如下:

此时Readme文件的内容被重置为原来的一行:"hello git!"

如果此时我们回退版本的时候,后悔了怎么办?
指令:
git reset --hard dfc471a62a287d4cfc27d3968fe104d03980b859
上述HEAD是我们最开始查日志的时候显示的最新一次提交的版本的字符串哈希值,如果你反悔了,在记得回退前的
版本的HEAD时,就可以使用上述指令撤销本次回退
如果你记不到HEAD了,git也是有后悔药可以吃的!
指令:git reflog
功能:查询更新前的git提交日志信息,其中有你日志更新前的所有版本提交的日志,其中有HEAD信息还有最左侧的部分信息
而部最左侧的信息也可以用来充当HEAD来进行撤销操作

撤销操作:

注意:这里说的撤销操作,只针对本地仓库,对于远端仓库不生效! 所以撤销操作的前提条件是:commit之后没进行push操作,这里的push操作暂不说明. 场景:当在某一个版本的基础上开发新的代码时,写了一坨之后,决定实在垃圾, 于是想撤销自己在当前版本之上写的所有代码时,就需要用到撤销操作。 撤销操作有三个场景,表格如下所示:

情况一:只更改了工作区的代码,其他区域未改变;

bash 复制代码
1.手动修改--代码量大的时候强烈不推荐!!
2.使用指令修改
    指令:git checkout -- 要撤销修改的文件
解释:一定要带上--俩个符号,表示撤销到最近一次更新的版本

情况2:修改了工作区代码后,又add到了暂存区中,但是版本库中未改变

cpp 复制代码
方法1:使用reset指令 + hard选项
    指令:git reset --hard HEAD
    解释:HEAD-->直接写HEAD表示回退至当前版本,HEAD^表示上个版本,以此类推;
方法2:使用reset指令 + mixed选项
    指令:git reset --mixed HEAD
    此时又回到了情况一
    则:git checkout -- 要撤销修改的文件即可

情况3:工作区、暂存区、版本库中都被修改了

bash 复制代码
1.直接使用reset指令:
    指令:git reset --hard HEAD^
    或者:git reset --hard 字符串哈希值(先git log 查询一下哈希值)

删除文件:

1.假设删除了工作区的文件,例如rm file.txt 注意:删除也算工作区的变动,所以也要同步到暂存区和版本库 1.1:git add file.txt 1.2:git commit -m "delete file.txt" 2. git提供的删除命令 指令:git rm 要删除的文件名 再接着:git commit -m "delete file.txt"即可

相关推荐
GISer_Jing6 小时前
Git协作开发:feature分支、拉取最新并合并
大数据·git·elasticsearch
高山莫衣12 小时前
git rebase多次触发冲突
大数据·git·elasticsearch
码农藏经阁12 小时前
工作中常用的Git操作命令(一)
git
kobe_OKOK_12 小时前
【团队开发】git 操作流程
git·elasticsearch·团队开发
码农垦荒笔记12 小时前
Git 安装闭坑指南(仅 Windows 环境)
windows·git
CC码码1 天前
管理你的多个 Git 密钥(多平台多账号)
git·gitlab·github
CC码码1 天前
管理你的多个 Git 密钥(单平台多账号)
git·gitlab·github
大卫小东(Sheldon)1 天前
GIM 1.5发布了! 支持Windows系统了
git·ai·rust
flying jiang1 天前
将大仓库拆分为多个小仓库
git
李boyang10 天前
Git(四):远程操作
git