建立
先找一个合适的目录建立一个文件,作为自己的版本库,找到合适的地方进入Git Bash
mkdir XXXX #建立一个新的空目录XXXX
git init #创建一个空的仓库
ls -al #查看创建好的目录
建立一个readme.md #ma的文件(保持b格)
需要注意创建好的仓库 ./git文件是隐藏的,win下的目录建议找一个上级无汉语的地方,编辑时采用UTF8无BOM格式编辑,也可以直接用vim编辑,可以看看本网站Linux系列的vim篇
提交
vim编辑一个文件,然后告诉并添加到git,并且上传仓库
vim readme.md
git add readme.md #告诉git,添加readme.me文件
git commit -m "XXXX1" #告诉git干了XXXX1,把文件提交到仓库
git命令只在git仓库目录执行, 查看状态 git status LICENSE MIT 协议 开源
修改再提交
vim编辑之前的readme.md文件,来尝试版本回退
git add readme.md #告诉git,添加readme.me文件
git commit -m "XXXX2" #告诉git干了XXXX2,把文件提交仓库
这里我们已经更改了两次,提交了两次内容了,
git log #查看历史记录
这里查看后发现有两条记录
$ git log #查看提交历史
commit 1476293fff0780b853b4415cb9d23a238b9dea58 (HEAD -> master)
Author: XXXXX <XXXXX@xxx.com>
Date: Sat Jan 8 12:43:07 2022 +0800
append GPL
commit bcd9ab5f0af9557ff64699821c9df1e753e3715f
Author: XXXXX <XXXXX@xxx.com>
Date: Fri Jan 7 22:50:40 2022 +0800
wrote a readme file
还可以试试加上--pretty=oneline
参数
git log --pretty=oneline #输出的一大串数字是commit id(版本号)
回退
Git里,HEAD表示当前版本 ,而上一个版本用 HEAD^来表示,上上个版本是HEAD^^,往上200个版本就是HEAD~200,然后用git reset命令就可以回退了
这里叙述一下HEAD的原理,HEAD其实相当于一个指针,回退版本的时候,Git会把HEAD指针从你的XXXX2操作指向XXXX1操作
git reset --hard HEAD^ #回退到上一个版本
cat readme.md #查看一下内容,发现已经是上一个版本的内容了
这里已经回退到之前的版本了,在git bash没有关掉之前,我们还可以回退到来时的第二个版本,只需要找到版本号如1476293fff0780b853b4415cb9d23a238b9dea58
,命令行输入的时候只需要输入写前几位,Git会自动找到这个版本,这就叫回到未来
git reset --hard 14762 #回到未来
cat readme.md #再次查看内容,发现已经回到了第二个版本
如果你不小心关掉了git bash,找不见版本号了,也没关系,
git reflog
$ git reflog
1476293 (HEAD -> master) HEAD@{0}: reset: moving to 14762
bcd9ab5 HEAD@{1}: reset: moving to HEAD^
1476293 (HEAD -> master) HEAD@{2}: commit: append GPL
bcd9ab5 HEAD@{3}: commit (initial): wrote a readme file
这里你可以看到你的版本号是简写的 1476293 你又可以回到未来了
总结
HEAD指向的版本是当前版本,
git reset --hard commit_id #在版本之间来回横跳
git log #回退前查看提交历史
git reflog #回到未来时,可以查看命令历史