以下引用于:御风大世界
1. 什么是Git?
Git是一个分布式版本控制系统。
版本控制系统?
如果你用Microsoft Word写过长篇大论,那你一定有这样的经历:
想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一直改下去,最后你的Word文档变成了这样:
过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找,真麻烦。
如果此时 你拥有一个版本控制软件, 你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。
而git 在版本控制软件当中可以说是最优秀的。
2. 新建一个本地版本库
目前操作只基于本地电脑,还没用到远程Git仓库。
首先新建一个文件夹GitTest。然后在这个文件夹中右键点击git bash here 选项。出现命令行工具,先运行命令 git init
,将目前所在的空文件夹作为本地Git版本库进行初始化。
运行完命令后GitTest文件夹中出现一个名为 .git 的文件夹(是隐藏的)。
在GitTest文件在中创建一个文本文档a.txt,内容为Hello Git。
然后打开git命令行工具,运行命令git status
,返回当前版本库中文件状态,提示我们当前目录的变化,以及我们接下来要做什么。
显示有一个需要git add
的文件a.txt。
按照提示操作,运行命令git add a.txt
(也可运行git add .
区别为:一个是添加一个特定的文件到暂存库,一个是添加目录下的所有文件)。然后再运行git status
查看目前目录状态。
但是git add
只是让这个文件进入了暂存库中,只有git commit
后才算正式进入本地版本库。
运行命令行 git commit -m "new file"
,-m是对新提交的文件的描述。
再执行git status
显示nothing to commit, working tree clean。
输入git log
命令行,查看提交操作历史。
git log
——查看所有文件历史
git log a.txt
——查看a.txt文件历史
3.回退(从现在版本退回到以前版本,再从之前版本回到现在版本)
在a.txt文件中加入一行 a new line。
运行命令行git status
查看目录下文件状态。
显示文件a.txt被改变。
运行git diff a.txt
(显示当前文件内容与已提交的文件内容不同之处)。
在这里插入图片描述
如果没有问题运行命令行 git add a.txt
与git commit -m "add a new line"
提交改变的文件a.txt。
可以运行git log
查看一下历史操作。
显示有两个提交版本。
现在如果要将文件a.txt变回没有添加 a new line 之前的版本呢
可以运行 git reset --hard HEAD^
——返回上一版本
如果不是返回上一版本呢,可以查看版本号,上图中commit后面的黄色字体即为版本号,git reset 版本号
——返回该版本
注:如果用git reset 版本号
命令行,要加上一条命令git checkout a.txt
(git reset
让文件指针 指向了一个版本 , git checkout
就是 把那个指针指向的版本拉到本地 ),或者直接用git reset --hard 版本号
来替代
文件a.txt返回之前版本。
如果现在又要将版本返回加了a new line的版本,我们直接git log
发现找不到那个版本的历史了
下面有一个新的命令,git reflog
来查看历史提交版本和操作记录。git reflog xxx
——定位具体文件
然后我们得到了版本号就可以直接返回,运行 git reset --hard cb6e31e