搭建博客经常用到git和GitHub工具,所以我就整完博客主题我就主动去学习了这两个工具。真正是体会到了开源这两个字的含义。
git就是实现分布式(分布式我的简单理解就是在不同的电脑/服务器)版本控制的一个工具,简单来讲就是实现文件历史管理的工具。
就好比你打boss没通关,存档会让你回到最近的一个关卡以及历史关卡。git就相当于存档,git能是我们回到历时版本的任何一个时期。每一次在本地修改文件后commit生成一个新的版本。
本地新建一个newp文件夹,git bash here 进入,执行
$ git init
这条命令表示,以后这个文件夹的修改都会被git记录。
当前文件为空所以提示:
Initialized empty Git repository in C:/Users/Johnny/Desktop/newp/.git/
newp文件夹下新建hello.txt文件,执行:
git add hello.txt
这条命令只是将文件写入git仓库的缓冲区,并没有真正提交。
确认提交需再执行:
git commit -m "添加了hello.txt"
-m 和后面引号内容是本次提交的说明,也就是描述你每次改了什么。每次修改都应该备注改了哪些东西,方便查找历史记录。
提示:
$ git commit -m '添加了hello.txt文件'
[master (root-commit) 62afd43] 添加了hello.txt文件
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 hello.txt
打开hello.txt文件,输入"print(‘hello world’)" ,这里的添加只是在本地写入成功了,内容还在git缓冲区区中,并没有真正写入到git仓库里。执行
$ git commit -m 'hello.txt文件里添加了一句话'
提示:
[master f712784] hello.txt文件里添加了一句话
1 file changed, 1 insertion(+)
这里的master f712784就是当前版本号。
之所以将一条提交命令拆分成add和commit,主要是为了
提高缓存访问速度,一次向仓库写入多条add指令,再commit,与计算机的缓冲区效果作用相似。
接着上面例子:
$ git log
这条命令用于查看版本情况
执行后提示:
commit f7127848119fbf08ecd4a8fb5fcd88bff496e3a1 (HEAD -> master)
Author: JohnnyLin12 <[email protected]>
Date: Wed Apr 8 14:27:16 2020 +0800
hello.txt文件里添加了一句话
commit 62afd430a565845973e211ecbf815c9e6a719898
Author: JohnnyLin12 <[email protected]>
Date: Wed Apr 8 14:25:17 2020 +0800
添加了hello.txt文件
可以看到最新的记录在最上方,往下是靠后的记录,每一次提交都生成了commit id(commit后面的一长串数字和英文),我们根据这个id来唯一识别版本,借助它可以回退到这个id所对应的版本。
Head表示当前版本。Head->指向master可以看出,当前版本是master
HEAD ^表示上一个版本,HEAD^^表示上上个版本。可以使用HEAD^n表示上n个版本
git reset --hard HEAD^
这条命令是用来回退到上个版本
–hard 后面可以指定版本的id,退到确切版本。前提是要知道那个版本的id
如我们上个版本的id是 62afd430a565845973e211ecbf815c9e6a719898
git reset --hard 62afd430
只填写使用id前7位就可以了。
$ git reflog
这条命令用于查看历史版本的id
返回:
f712784 (HEAD -> master) HEAD@{0}: reset: moving to f71278481
62afd43 HEAD@{1}: reset: moving to HEAD^
f712784 (HEAD -> master) HEAD@{2}: commit: hello.txt文件里添加了一句话
62afd43 HEAD@{3}: commit (initial): 添加了hello.txt文件
推荐git教程:廖雪峰Git教程