既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- 用户信息:
# 全局配置,用户名,邮件地址,使用全局配置之后该机器上所有项目都将会默认使用该用户信息
git config --global user.name "username"
git config --global user.email "username@example.com"
# 对某个Git仓库使用指定不同的用户名和邮件地址
git config user.name "username"
git config user.email "username@example.com"
- 查看配置信息
git config --list
Git 基本操作
Git 工作区域主要可分为三个:工作区(workspace)、暂存区(stage/index)、版本库(respository)
Git 文件的四种状态:
- Untracked:未跟踪状态,该文件在工作区中,但暂存区和版本库中都不存在该文件,该文件不参与版本控制。该种类型文件仅有一种改变状态方式:即通过git add [file] 将文件添加入暂存区,其状态将由Untracked变为Staged。
- Unmodify:未修改状态,该文件已在版本库中,且工作区中的文件内容与版本库中的文件内容完全一致。该种类型文件有两种改变状态方式:
1、被修改,其状态将由Unmodify变为Modified;
2、通过git rm [file] 将文件移出版本库,其状态将由Unmodify变为Untracked。- Modified:修改状态(仅对库中原有的文件进行修改的操作,无其他操作),该种类型文件有两种改变状态的方式:
1、通过git add [file] 将文件添加入暂存区,其状态将由Modified变为staged;2
2、通过 git restore [file] 将工作区的改动丢弃,其状态将由Modified回到unmodify状态- Staged:暂存状态。该种类型的文件有两种改变状态的方式:
1、通过 git commit 将修改内容同步至版本库中,此时本地文件与版本库中的文件内容又变为完全一致,文件状态由Staged变为Unmodify状态;
2、通过 git restore --staged [file] 取消暂存,文件状态由Staged变为Modified状态。
- 创建版本库
# 1. 创建一个名为gitfolder的项目文件夹,该文件夹即可理解为工作区
mkdir gitfolder
# 2. 切换至gitfolder目录下
cd gitfolder
# 3. 创建该项目的初始版本库,此时会在当前目录下生成一个名为.git的隐藏文件夹,此即为版本库
git init
- 添加文件到仓库
# 4. 在项目文件夹下创建index.html,此时index.html没有在暂存区和仓库里,不受版本控制,此时文件状态为Untracked
echo "Hello World" > index.html
# 5. 将index.html,添加至暂存区,文件状态发生改变[Untracked -> Staged]。此时.git文件夹中会生成一个名为index的文件,此即为暂存区
git add index.html
# git add [file]
# file 可以是多个文件,也可以是目录
- 提交文件到仓库
# 6. 提交文件至仓库。注:此时的提交是将暂存区的文件提交至版本库,工作区与版本库文件内容一致,文件状态发生改变[Staged -> Unmodify]
git commit -m "add index.html"
# git commit -m [message]
# message 是本次提交的备注,方便记忆
# git commit -am "add index.html",该命令会自动暂存已修改和被删除的文件,但对新添加的文件不适用,不建议使用这种提交方式。
- 比较文件不同
# 7. 修改index.html,文件状态发生变化[Unmodify -> Modified]
echo "Hello Human" > index.html
# 8. 将修改过的index.html添加至仓库,文件状态发生变化[Modified -> Staged]
git add index.html
# 9. 修改index.html
echo "Hello everyone" > index.html
# 10. 比较文件不同,此命令比较的是工作区与暂存区中index.html的区别
git diff index.html # show 1
# 11. 比较文件不同,此命令比较的是暂存区与版本库中index.html的区别
git diff --cached index.html # show 2
# 12. 比较文件不同,此命令比较的是工作区与版本库中index.html的区别
git diff HEAD index.html
# git diff [file]
# git diff --cached [file]
# git diff HEAD [file]
# file 可以是多个文件,也可以是目录
# show 1 工作区与暂存区。a为暂存区,b为工作区
diff --git a/index.html b/index.html
index d98ab83..9c514e8 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-Hello Human
+Hello everyone
# show 2 暂存区与版本库。a为版本库,b为暂存区
diff --git a/index.html b/index.html
index 557db03..d98ab83 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-Hello World
+Hello Human
# show 3 工作区与版本库。a为版本库,b为工作区
diff --git a/index.html b/index.html
index 557db03..9c514e8 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-Hello World
+Hello everyone
git diff 理解 (使用show 1:git diff index.html 解释):
第一行:diff --git a/index.html b/index.html
,申明比较的文件,a版本的index.html(即变动前),b版本的index.html(即变动后)
第二行:index d98ab83..9c514e8 100644
,d98ab83
为变动前的a版本文件的hash,9c514e8
为变动后的b版本中文件的hash,100644
为申明对象模式:100
代表普通文件,644
代表文件具有的权限
第三、四行:--- a/index.html
、+++ b/index.html
,---
代表变动前,+++
代表变动后
第五行:@@ -1 +1 @@
==@@ -1,0 +1,0 @@
,-
指变动前的文件,+
指变动后的文件,指变动前的文件从第1行开始的0行与变动后的文件第1行开始的0行存在不同
第六、七行:-Hello Human
、+Hello everyone
,-
、+
:代表变动标志位,-
代表该行删除内容,+
代表该行新增内容
- 查看仓库状态
# 13. 查看仓库状态,显示有变更的文件
git status
位于分支 master
要提交的变更:
(使用 "git restore --staged <文件>..." 以取消暂存)
修改: index.html
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git restore <文件>..." 丢弃工作区的改动)
修改: index.html
# 分析返回信息
# 回顾步骤:
# 1. 创建文件 index.html (Hello World),添加至暂存区,提交至版本库;
# 2. 修改文件 index.html (Hello Human),添加至暂存区;
# 3. 修改文件 index.html (Hello everyone)。
# 由此可知,git status 返回的要提交变更(即暂存区中尚未提交)的文件为 index.html(Hello Human);git status 返回的尚未暂存以备提交的变更(即工作区中修改后)的文件为 index.html (Hello everyone)。
git status 理解
- 要提交的变更:已跟踪的文件,其在工作区有动作(即增删改),并已同步其动作(即增删改)至暂存区,但该文件动作(即增删改)未提交至版本库
- 尚未暂存以备提交的变更:已跟踪的文件,其在工作区有动作(即增删改),但该文件动作(即增删改)未添加至暂存区
未跟踪的文件:未跟踪的文件
- 删除文件
# 14. 删除文件
git rm [file]
# 根据报错信息我们可知index.html在暂存区的内容与工作区和版本库中的都不一样,需要使用-f强制删除
# 删除文件的几种报错
# 1. 仅修改了工作区内容的文件
error: 如下文件有本地修改:
test.html
(使用 --cached 保留本地文件,或用 -f 强制删除)
# 2. 修改了工作区内容的,并已添加至暂存区的文件
error: 下列文件索引中有变更
test.html
(使用 --cached 保留本地文件,或用 -f 强制删除)
# 3. 修改了工作区内容的,并添加至暂存区后,又修改了工作区内容的文件
error: 如下文件其暂存的内容和工作区及 HEAD 中的都不一样:
index.html
(使用 -f 强制删除)
# 由此可知,只要工作区与暂存区之中的文件有所变动,删除文件就必须家参数 -f
![img](https://img-blog.csdnimg.cn/img_convert/7413835b143a8e19091664c64f2eb44c.png)
![img](https://img-blog.csdnimg.cn/img_convert/f11362d3f9fb78d61c7e4e1d83dcf503.png)
![img](https://img-blog.csdnimg.cn/img_convert/46650ac0fec484f798cc0a981bcf04d3.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
链图片转存中...(img-xO214URd-1715573579327)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**