【git的学习】本地仓库的理解和使用(二)git reset

通过【git的学习】本地仓库的理解和使用(一)学习了暂存区和共工作区的一些指令。
但是暂存区与工作区的交互其实没什么用,贮存区才是git的大佬。
我们先进行一个最简单的提交。
我们先创建一个git仓库

git init

再创建一个index.txt文件,内容为:

I created index.txt!

我们将文件add到暂存区:

git add index.txt

接下来进行一个最简单的提交:

git commit -m "first commit"

它最终输出了:

[master (root-commit) 52667c0] first commit #表示提交的分支master以及提交版本号的前7位以及提交时-m后的信息
#分支与版本号会在接下来进行说明 
 1 file changed, 1 insertion(+) #表示一个文件改变了,其中加了一行文本
 create mode 100644 index.txt #表示创建了的文件的(100644)类型和权限。

如果你不加 -m 的话,就会跳出一个编辑器来输入本次提交的说明。可以使用全局配置命令

git config --global core.editor

来更改默认编辑器(最好每次都加提交说明,以便改善你以及其他小伙伴的可读性)
我们也可以跳过add,来直接提交

git commit -a -m " "

假如说想要忽略对某些文件的纪录跟踪,比如说前端一些依赖的包,比如说打包出来的文件,比如说一些日志文件或者编辑器配置等,就要在工作目录下创建.ignore文件,告诉git,这些文件不用纪录。

以下是官方文档里的案例

# 所有.a拓展名结尾的文件都不跟踪
*.a

# 优先级别最高,还是得跟踪lib.a文件就算上面的语句忽略了对.a文件的跟踪
!lib.a

# 只忽略当前目录中的TODO文件
/TODO

# 忽略所有在build文件夹下的文件
build/

# 忽略指定文件夹目录这一层中的指定文件
doc/*.txt

# 忽略指定文件夹下各层级的.pdf文件
doc/**/*.pdf

行,了解了最基本的提交后我们开始进行重要的版本回退的学习了

版本回退

首先可以使用

git log #查看详细的提交纪录
commit 52667c043a702970d8c25960cb21e58948902e9b (HEAD -> master)
Author: wahtwang <603225315@qq.com>
Date:   Mon Apr 29 17:49:25 2019 +0800

    first commit

显示得很详细,谁提交了,什么时候提交了,提交的信息时什么。提交的版本号是什么。
我们再在文本内加入 I inserted a new line!再将内容保存并提交
git commit -a -m "second commit"
git log 显示

commit a457526f3a4fc0ed512361c7b3d8fc8c423da620 (HEAD -> master)
Author: wahtwang <603225315@qq.com>
Date:   Wed May 1 16:37:23 2019 +0800

    second commit

commit 52667c043a702970d8c25960cb21e58948902e9b
Author: wahtwang <603225315@qq.com>
Date:   Mon Apr 29 17:49:25 2019 +0800

    first commit

如果内容太多我们也可以使用git log --pretty=oneline来缩减内容
--pretty可以给予一些内容显示格式供你挑选,另外还有 short,full 和 fuller 可以用。

a457526f3a4fc0ed512361c7b3d8fc8c423da620 (HEAD -> master) second commit
52667c043a702970d8c25960cb21e58948902e9b first commit

就只显示版本号和提交说明了
如果想看每次提交具体做了些什么,可以加上-p选项
如果想要限制显示的提交的内容数,如就看近两次提交的结果,可以加上-2
如果想要查看总结性的提交内容,可以用--stat

git log -p -2

那么使用什么命令可以回退版本呢。

git reset

上一章我们使用git reset清空了暂存区的改动,其实是使用了git reset --mixed HEAD命令,其中,HEAD是指当前版本,其中--mixed是指将贮存区版本回退到 HEAD(也就是当前版本),并同步暂存区的内容(清空暂存区相对于贮存区的修改)。
我们还可以重置暂存区中单独的某个文件(加个路径,或文件名),使用git reset index.txt,实际上是git reset --mixed HEAD index.txt--mixedHEAD是默认的,所以可以省略。加了index.txt后会跳过第一步,也就是跳过将贮存区版本回退的一步,只将暂存区版本进行回退。

如果想要回退指定文件,像上面一样,在reset后可以加个路径或文件名,只有mixed才可以这么做。

HEAD 相对的有 HEAD^ 表示上一个版本 HEAD^^ 表示上上个版本以此类推。HEAD~1 表示上一个版本;HEAD~2表示上2个版本,以此类推。

--mixed相对的也有其他几个选项--soft软回退,和--hard硬回退。
--soft是只将贮存区版本回退到 HEAD,不修改暂存区和工作区。
--hard是将三个区域都同步到HEAD
所以如果我们想要回退的话使用git reset --hard HEAD^将所有区域的内容回退到上一个版本。
如果你后悔了,git reset --hard a4575回退到指定版本,那这个a4575哪里来的呢,它是回退前版本的版本号。
你可以从未关掉的命令行找到它,也可以通过git reflog来寻找,它纪录了你每一次命令的相应信息。


好,这一章最后再来总结一下用到的命令

git commit #提交改动到贮存区,-a跳过add,-m写下提交修改的备注。
git log #显示每次提交的信息,--pretty=oneline来缩减信息内容,在提交较多时信息更可读。
git reset #本章重点,回退版本
# --hard 回退贮藏区版本并重置工作区和暂存区
# --mixed(默认)回退贮藏区版本并重置暂存区
#--soft只回退贮藏区版本
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值