Git是用来干什么的呢?
是用来管理代码文件的,具体是啥自行百度就行,其实你点进来你多少会对他有点了解,知道他是干嘛的~
提示:照着本文,敲一下指令就能掌握,底层原理了解即可,主要是会用!
01 | 下载软件
软件官网
Git官网进口
下载好了可以输入
git --version
这里可以看到git的版本,这就说明git安装成功了!
02 | Git的命令–开发需要
首先需要熟悉linux常用基本命令!
而常用的Git也就无非这么几个
只要把linux命令,配合git命令(红色的记住),就能实现大部分开发需求了!
git init
:初始化
git status
:查看状态
git add <文件名>
:追踪文件,添加到暂存区
git commit -m '备注' <文件名>
:提交文件到本地库
git reflog / git log
:查看日志
git reset --hard 版本号
:版本切换
git rm --cached <file>
:丢弃工作目录中对文件的修改,将其还原为最近一次提交的状态。
git restore <file>
:用于取消暂存区中对文件的修改,将其还原为最近一次提交的状态,并保留工作目录中的修改
git restore --staged <file>
:用于停止跟踪某个文件,将其从暂存区中移除,但保留在工作目录中。
03 | 实操
3.1 | 设置用户签名和密码
这里的用户签名和其他地方任何的账号密码都没有关系,这个只是作为你提交代码的一个标识,你在本机上提交代码,提交代码的人就是你设置的签名Layne,这只是一个标识。
3.2 | 初始化本地库
在桌面新建一个文件
git-demo
,在这个文件里面又新建一个文件
git_space
接着在这个路径下,启动git bash窗口,输入
git init
命令
可以看到,该目录下创建了一个
.git
的文件,这个文件放的东西就是用来进行版本控制的。
在window里可以看到如下的文件结构,把隐藏的文件打钩
3.3 | 查看本地库状态
输入命令
git status
下面来分析一下这三行输出的文字所代表的意思
现在在
git_space
下执行下面代码
可以看到创建了一个
hello.txt
的文件,里面编写了一些内容。
这时候我们再来看git status
1、前两行文本没有变化,
2、第三行有了改变,意思是,存在没有追踪的文件,下面括号也说了,(使用git add <文件>
这个这个命令去添加它,然后准备提交),
3、红色的hello.txt
说明该文件只存在而已,但是没有被追踪。
4、最后一行说了,没有可以添加去提交的东西,但是呢,存在没有追踪的文件(使用git add
命令去追踪它)
3.4 | 添加文件到暂存区
那么我们就使用
git add <filename>
这个命令,添加到暂存区吧~,也就是追踪这个文件。
再使用git status
命名查看一下状态。
再来分析一下输出的文本
1、没有变化,在master分支上
2、没有提交过东西
3、提交这个改变,可以看到这个hello.txt
文件变成了绿色,说明我们已经把这个文件添加到暂存区了,已经被追踪了。括号里面写(使用
git rm --cached <file>
命令去取消上一步操作
那我们就按照他的提示操作一下吧
git rm --cached hello.txt
再查看一下状态
- 可以看到,
hello.txt
回到了没有被追踪的状态,可以理解为把这个hello.txt
文件从暂存区拿出来- 这个告诉我们,暂存区的数据既然可以被添加,也可以被删除(只是移出暂存区)
- 现在我们重新把
hello.txt
文件添加回去
3.5 | 提交本地库(赠:查看日志)
这个的意义就是,将暂存区的文件添加到本地库,形成一个历史版本
基本语法:
git commit -m “备注” <文件名>
再来进行查看一下状态
- 发现这次输出只有两行文本 1、在master分支,这个没变 2、没有可以去提交的东西,工作区已经清空了 对比一下之前的三个文本 少了No commits yet,这句话说的是“还没有提交过东西”,而现在我们已经提交东西了,所以他就不显示了。
这里我们可以使用一个查看版本提交的命名
git reflog
解释一下:
- 0759d50 :表示提交版本号,由Git自动生成,通常用哈希值表示
- (HEAD -> master) : 表示HEAD这个指针,指向master,也就是我们现在在master这个分支上
- HEAD@{0} : 表示HEAD的一个偏移量,而这个偏移量是{0},在这个位置进行的提交
- commit (initial): first commit : 你之前提交的时候,输入的备注信息
可以再使用
git log
命令,这个命令是查看完整版的日志的
解释一下:
- commit 操作的一个版本号(这个是一个完整的,而
git reflog
只是截取了一部分的哈希值),HEAD指针指着master分支- 作者:用户名 邮箱 (也就是一开始设置的东西)
- 提交的日期: 巴拉巴拉
- 提交的备注信息
3.6 | 文件的修改
在
hello.txt
文件中插入修改一下,添加了‘123456’
再次查看本地库的状态
解释一下:
- 在master分支
- 意思是‘更改没有提交到暂存区’,也就是没有被追踪 (使用
git add <file>
命令去更新将要被提交的内容) (使用git restore <file>
命令去放弃更改在工作目录中)- 更改的文件:
hello.txt
,可以看到这个文件变成了红色,说明没有添加到暂存区里- 没有添加要提交的更改(使用
git add
或者git commit -a
)
使用
git restore <file>
命令
查看状态发现,他提示说,没有东西可以提交,工作区是空的,也就是没有执行过任何操作
再看文件内容,这个‘123456’也给我撤回去
好了~,我们把文件还原吧,把‘123456’重新输入进去,回到执行
git restore
前的状态吧,再进行下面的操作
使用
git add
命令添加到暂存区,再看看状态
意思是,在master分支上,将要提交的更改:
(使用git restore --staged <file>
命令,把文件移出暂存区)
修改了文件:hello.txt
输入一下命令
git restore --staged <file>
不知道你有没有发现,回到了之前的使用
git add
的时候
对文件进行commit一下吧
解释一下:
- 【master分支, 版本号(哈希值截取)】,备注信息
- 一个文件修改了,一行添加,一行删除 (Git里面是对行进行处理的,所以你的修改操作,它表示为删除一行,然后新增一行) =========================
- 再次查看状态,这个时候已经没有东西提交啦,而且工作区也干净了
执行一下
git reflog
和
git log
查看日志信息
解析一下:
- 可以看到第一行的备注信息为上一次提交,也就是第二次提交,HEAD的偏移量为0,而上一次的偏移量为1了,同时也可以看出,这个HEAD指针指向master分支的同时,指向第二个提交版本
3.7 | 历史版本和版本穿梭
先再进行一个文件修改,然后提交
此时有三个被提交的版本了
文件改了之后,我想要回到任何一个提交的版本怎么办呢?
可以使用git reset --hard <版本号>
解释一下:
- 文本输出,这个HEAD指针现在指向了我们输入的版本号,备注是第二次提交
- 查看一下日志
- HEAD指针指向了master分支,然后是第二次提交的版本
再看一下文件内容,已经是回到了之前的状态了
其实你想要切换到哪里都可以,只需要带上版本号就行
底层其实是指针的移动操作
图说明了,这三个版本同时存在,只要master指向哪里,就是哪个版本。
持续更新中。。。。,你的支持是作者的动力噢~
版权归原作者 森林里的北极猿 所有, 如有侵权,请联系我们删除。