一、Git常用命令
1.1、设置用户签名
git config --global "用户名"
git config --global 邮箱
配置权限:
1. local(优先级最高):默认,只影响本地;
2. global (优先级中等) :影响当前用户的git仓库;
3. system (优先级最低) :印象到全系统的git仓库;
注意:首次下载git一定要进行设置,否则后续提交代码会出错;这里的邮箱不一定需要真实邮箱,可以是一个虚拟邮箱;
执行效果:
通过如下路径
找到如下文件打开,便可以看到刚刚的配置效果;
1.2、初始化本地库
git init
使用方法:
1.3查看本地库状态
先来介绍以下git中的两个状态:
1.内容状态:表示内容文件的改变,有三个区域,分别是 工作区、暂存区、提交区;
2.文件状态:有两个,已跟踪和未跟踪;
关系如下:
如何查看本地库状态?命令如下:
git status
使用效果
解释:
On branch master:表示当前在master(默认)这个分支下;
No commits yet:表示当前还没有提交过任何东西,是一个空的库;
nothing to commit :表示没有东西需要提交(该目录下没有可提交的文件);如果通过vim创建了一个test.txt文件,再查看本地库状态,就如下图
那如何把本地文件添加到暂存区呢?往下看~
1.3、添加文件到暂存区
//添加文件内容到暂存区(同时文件被跟踪)
git add 文件名 + 后缀
//添加所有文件
git add .
执行效果:(将文件test.txt添加的到暂存区)
这里有一个警告是怎么回事呢?实际上就是我们test文件中的内容换行符是用的CRLF,而linux下需要使用LF;实际上,这个警告不用担心,因为他会帮你自动转换的;
接下来使用git status 查看状态就会发现:(如下图)
这里就表示test.txt放入暂存区中了;当然,如果你想把他从暂存区删除掉(只是删掉了暂存区的,工作区的还是存在的),上一行命令也提示你了,可以使用"git rm --cached <file>..."来删除;
添加的暂存区,接下来需要干什么呢?往下走~
1.4、将暂存区文件添加文件到本地库
通过这个操作,就可以把代码提交到本地库,形成自己的历史版本;
//从暂存区中提交
git commit -m 'first commit' 暂存区中的文件名+后缀
//扩展:从工作区提交
git commit -a -m 'full commit' 工作区中的文件名+后缀
'first commit' 这里的日志可以根据自己情况所写;
执行效果如下:
蓝框里的 6fc5174 就表示当前提交的版本号(精简版,后文有介绍完整版);
这时候本地库状态是什么样的呢?如下执行效果
nothing to commit, working tree clean :这里就表示,没有东西可以提交了,工作已经清理完成;
1.5、查看历史版本(提交历史记录)
//查看历史提交版本信息
git reflog
//查看历史提交版本的详细信息
git log
执行效果如下:
这里的first commit是当时你提交时候所写的日志信息~
(HEAD -> master)就表示指向的当前版本;
1.6、修改文件
如何修改已经提交了的文件呢?
这里作者已经修改过的文件,如下
通过git status查看本地库状态如下
这里就会提示你,文件已经是被修改过的了,并且又放到了工作区(标红了)
通过git add 和 git commit提交文件,最后查看本地库信息,就发现已经清理干净了~
通过git reflog查看提交版本信息就可以观察到,上面两次提交的结果,如下:
1.7、版本穿梭
先来简单了解一下什么是版本穿梭~
简单来讲就是当前提交版本,你觉得写的并不好(还没有上一个提交版本写的好),就可以通过版本穿梭,穿梭到上个版本!
//git reset 将当前分支回退到历史某个版本
git reset --mixed 版本号 //(默认)
git reset --soft 版本号
git reset --hard 版本号
Ps:
--mixd表示只保留工作区状态,暂存区会被重置
--soft表示工作区和暂存区都保留
--hard表示工作区和暂存区都被重置
总结: 它们均有移动 HEAD 指针的能力,但是它们对于工作区与暂缓区的处理却是不同的。
那就演示一下,将刚刚修改的test,txt的第二个版本回退到第一个版本,如下~
查看提交日志,如下
(HEAD -> master)就表示当前版本指向;
底层原理:
git 控制版本信息,并不是通过复制粘贴内容创造副本实现的,而是在内存中记录了很多版本信息,最后通过调用指针来指向不同的版本;
注意:
版本穿梭不光可以穿梭到以前的版本,还可以穿梭到以后的版本~