Git学习(一):初始化、添加文件、版本回退
初始化一个仓库
本文使用的命令行工具为cmder,部分显示可能和cmd不同,但结果是一样的
初始化一个Git仓库,使用git init
命令。在cmder软件下初始化git后,目录后面会多出这么一串字符(master -> origin)
切换到非Git仓库路径时,后面是没有这串字符的
会在当前目录下生成一个.git
文件夹
若想取消初始化,删除改文件夹即可 rm -rf .git
,删除后git目录后面的 (master -> origin) 也不见了
添加文件到Git仓库
首先创建一个文本文件
vim test.txt
内容为:
Hello Git!
这里发现,当Git仓库内增加了文件时,cmder目录后面显示的字符串颜色发生了变化
接下来添加到Git仓库,分两步:
-
使用命令
git add <filename>
,注意,可反复多次使用,添加多个文件; -
使用命令
git commit -m <message>
,完成。(message为提交文件的描述信息,以便获知变更内容)如图,提交成功,同时在cmder软件下,提交后目录名后面的字符串颜色变回原来的白色
git status
命令可以让我们时刻掌握仓库当前的状态
修改文件信息,第二行添加内容
This twoline
然后执行 git status
查看仓库状态
然后将文件改动提交,再次查看
这里可以发现cmder这个软件会自动判断Git仓库的文件状态,在提交后目录后面的字符串又变回了无变化的白色
如果想查看具体修改了什么内容需要用git diff
这个命令
这里没有显示信息是因为我们已经提交过了
进入文件将刚才加入的第二行内容删除后再次查看
前面有个-
表示第二行的内容被删除
版本回退
在Git中,我们可以用git log
命令查看历史版本信息
git log
命令显示从最近到最远的提交日志
图中一大串类似97d9e...
的是commit id
(版本号),是一个SHA1计算出来的一个非常大的数字,用十六进制表示
这里如果嫌输出信息太多,可以试试加上--pretty=oneline
参数,每次提交只显示一行内容
这里我们先把刚刚删除的操作提交再加上--pretty=oneline
参数查看:
HEAD
指的是最近一次的提交,所以这里 HEAD
变成了刚刚的这次提交
同时,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
太过麻烦,所以写成HEAD~100
回退版本之前我们先随便添加一些内容在test.txt文件中提交:
接下来我们使用使用git reset --head HEAD^^
命令来回退test.txt文件到上一个版本:
**git reset 用法如下:**
用法:git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<提交>]
或:git reset [-q] [<树或提交>] [--] <路径>...
或:git reset --patch [<树或提交>] [--] [<路径>...]
-q, --quiet 安静模式,只报告错误
--mixed 重置 HEAD 和索引
--soft 只重置 HEAD
--hard 重置 HEAD、索引和工作区
--merge 重置 HEAD、索引和工作区
--keep 重置 HEAD 但保存本地变更
--recurse-submodules[=<reset>]
control recursive updating of submodules
-p, --patch 交互式挑选数据块
-N, --intent-to-add 将删除的路径标记为稍后添加