git基本使用
git的优势在于不受网络限制,可以保证在开发的过程中保留多个版本以供恢复(本地一些版本,GitHub仓库里还有一个备份)
包含了基础指令,如系统环境配置、创建仓库、仓库基本操作等
基本属性配置
首先需要设置开发者的用户名称和邮箱(一般设置为global)
git config --global user.name=wwt-13
git config --global user.email=1270414897@qq.com
关于config的三个作用域(简要介绍)
git config --local
git config --global
git config --system
如果要显示自己的git配置,直接git config --list --global
即可
本地仓库的创建
以下是创建一个本地仓库的基本步骤
# 先将路径一路cd到你在本地创建的仓库总文件夹
# 创建初始文件夹
mkdir repository_name
# 此时只是创建了一个基础文件夹,它还没有成为一个正式的仓库
# 生成.git配置信息(完成仓库的创建)
git init
- Plus:.git文件夹默认隐藏,它用于存放包含有全部git的版本信息
仓库基本操作
关于GIT仓库的介绍
工作区 | 暂存区 | 版本区 |
---|---|---|
用户编写的代码文件,所有文件操作均在工作区中完成 | 将工作区中修改的文件保存到暂存区中,通过git add 指令 | 是真正进行项目发布的代码,通过git commit 指令 |
- 首先用户要在工作区中编写程序文件,但是此时的文件并不能真正的保存在GIT仓库之中,并且在这一个区域中所进行的文件的创建、修改、删除操作,都不会影响最终的软件版本发布。如果现在需要将这个临时区域的内容发布到最终的软件版本里面需要先增加到暂存区。此时表示代码可以撤销,使用git add. 进行增加。
- 使用git add之后工作区中文件的状态进行了删除,而后将所有新文件保存在暂存区里面。保存在暂存区里的内容只能说是暂时需要的;暂存区的内容可能会被删除,而后真正要发布的项目必须将其设置在Master分支上(版本库),这样只有进行提交后才可以将暂存区的内容保存在版本库中,才能够真正被其他人所使用。
- 由于一个项目可能被发布多次,所以在git里面进行保存之后,都会自动的生成一个提交的版本编号(Commit ID)
下面开始介绍仓库操作的基本指令
-
git status
查看当前仓库状态,如果git发现仓库中有文件被修改,就会提示给用户 -
git add file
将文件存入暂存区,如果一次性修改文件很多,可以直接使用git add .
来一次性上传,注意add和.之间存在空格 -
git commit -m "注释"
将暂存区中的文件存入版本区更新版本,注释里可以写入本次修改的信息内容,方便以后恢复文件时查看- 当然如果上述操作比较繁琐的话,也可以直接自动添加并提交修改到版本库中
git commit -a -m "Change hello_world.c"
,该方法会将发生修改的文件全部提交 - 如果觉得打开文件慢慢查看修改处比较麻烦,还可以直接使用
git diff file
来查看自己文件修改处(旧的内容为红色,新的为绿色)
- 当然如果上述操作比较繁琐的话,也可以直接自动添加并提交修改到版本库中
版本回退以及前进状态的切换
在任何的开发之中,对于软件的操作代码,都很难保证其不需要恢复到先前状态 。因为新增加的程序可能会由于某些原因从而导致失败,而需要快速的进行版本恢复
- 查看当前日志信息
git log
或者git log --pretty=oneline
(显示在一行中) - (整个版本日志采用栈的形式,格式为’内容’+‘注释’)
此时版本区中存在两个版本,根据注释信息,早期提交了一个未完成的md文件,后期版本更新了这个文件(HEAD指针指向当前的最新提交的版本内容)
-
回退到上n个版本
git reset --hard HEAD~n
,此时修改HEAD指针,就相当于与修改了仓库的版本 -
git checkout -- <file>
拉取暂存区文件 并用其替换工作区文件(与add同理,空格+. 表示修改所有文件) -
git reset HEAD -- <file>
拉取最近一次提交到版本库的文件到暂存区 改操作不影响工作区 -
git rm --cached file
删除暂存区中的文件查看三个分区中的区别
git diff git diff --cached git diff HEAD 查看工作区和暂存区的区别 查看暂存区和版本区的区别 查看工作区和版本区的区别 为什么需要暂存区
假设一个场景:
当你自己工作时,写文件写了一半,没有commit交给版本库时突然上司告诉你有一个Bug要紧急处理,但是完成自己的工作还需要两天时间
这时,你不能commit提交给版本库,因为你没做完,这样会影响到其他人的工作\
试想:
如果没有暂存区,你修改的文件只可以立刻保存到版本库中,这样很容易对别人的工作造成影响所以我们需要暂存区
该解释出处(博主皓皓松的文章):https://blog.csdn.net/qq_31828515/article/details/62893425
发现前面有关版本回退的内容理解的实在是太片面了,现在再重新理解一遍
git status
:查看的是暂存区和版本区中有无修改
返回信息类型
- changes to be committed:文件已被存入暂存区但还未被提交到本地仓库
- changes not staged for commit/untracked files:文件还未被存入暂存区
暂存区
git ls-files
:查看暂存区中文件名
git rm --cached file
:移除暂存区中指定文件(如果工作区内容被修改,可以使用-f
,force强制删除)
haha!终于给我看懂了,现在使用drawio查看下方文件即可,文件以及同步在Google云端硬盘上了(博主对reset的指令画了很多图解)
google云端的drawio文件,可以直接在draw.io官网打开
直接选择关联应用打开即可,如下图
日常指令
- 清屏指令
reset+回车 or ctrl+L
,不同的是,reset是真清屏,ctrl+L是伪清屏
持续更新ing