GIT项目管理工具(part8)--版本控制

喜夏-厌秋 提交于 2020-03-09 13:57:38

注意:这是关于GIT的一系列blog,前一个知识点引出后一个知识点,后一个例子接着前一个例子。

目录

简介及概念
初始配置
初始化仓库及查看仓库状况
提交文件暂存记录及同步文件至本地仓库
查看commit 日志记录
放弃工作区文件修改及从仓库区恢复文件
移动或者删除文件
版本控制
保存工作区
分支管理


版本控制

1.退回到上一个commit节点

git reset --hard HEAD^

注意: 一个 ^ 表示回退1个版本,依次类推。当版本回退之后,工作区会自动和当前commit版本保持一致

备注:如果我们想要回到上上个commit节点则可以在最后敲2个【 ^ 】上箭头,回到上上上个commit节点则可以在最后敲3个【 ^ 】上箭头,以此类推。

举个例子5(接例子4)

如果,我们想退回到【文件IMG2.jpg还没有移动到files文件夹下】的状态,该如何是好呢?

我们看一下我们的commit日志:

我们可以看到我们的最后一步操作是移动IMG2.jpg文件,则我们可以直接退回到上一个commit节点(git reset --hard HEAD^):

我们看到,commit操作节点退了一步。
退回到了【rm image_mysql_out.py】。这表示我们仓库区的存储位置向前走了一步,我们工作区随之与仓库区的存储情况保持一致。

我们看一下git项目目录:

嗯!IMG2.jpg回到了它以前的位置。

但是我们要是想向前退回5个节点呢?总不能在末尾敲5个【^】吧。这时我们可以利用到我们的全球唯一的commit编码。具体操作见下面的知识点。

2.退回到指定的commit_id节点

git reset --hard [commit_id]
#commit_id为我们想要跳转的节点的commit编码的前7位

举个例子6(接例子5)

我们先看一下commit日志:

我想退回到指定的commit_id节点(git reset --hard [commit_id]),就是图中那个被红框框起来的那一个commit节点,它的commit编码前7位是1cf34a7:

可以看到我们已经退回到了指定commit节点,再看一看我们的git项目文件夹,求证一下:

嗯!可以!文件都回来啦!

3.查看所有操作记录

git reflog

注意:最上面的为最新记录,可以利用commit_id去往任何操作位置

举个例子7(接例子6)

如果我现在后悔啦!!我不想退回到例子6中的commit节点了,我想将一切恢复到例子4中IMG2.jpg在files文件夹下的状态~该咋整呢?

我们先查看所有操作记录(git reflog):

备注:最新的操作记录在最上面。

再复制一下,commit节点【mv IMG2.jpg】前的commit编码,并敲出以下命令:

再看一下commit日志:

嗯!原来的那么一大坨记录又回来啦!我们又回到了【IMG2.jpg在files文件夹下】的状态。

我们再看一下,git项目文件夹下的文件,求证一下:

啧啧啧,厉害!

由这个例子,我们可以看出,在【查看所有操作记录(git reflog)】的结果中,reset和commit冒号后面的内容非常重要!我们通过提示信息,判断哪个节点为我们想要退回的节点。冒号后面的内容,为【git commit [file] -m [message]】中【-m】后的【message】。所以,我们之前才说代码【git commit [file] -m [message]】中的message是必须要填的!

4.创建标签(给某个重要的commit节点起一个名字)

标签: 在项目的重要commit位置添加快照(临时存储),保存当时的工作状态,一般用于版本的迭代。

git tag [tag_name] [commit_id] -m [message]
#若不写commit_id则默认在最新的commit节点处添加标签
#----------------------------------------------------------
#e.g. 在最新的commit处添加标签v1.0
git tag v1.0 -m '版本1'

说明: commit_id可以不写,则默认在最新的commit节点处添加标签,message也可以不写,但是最好添加。

5.查看标签

git tag #查看标签列表
git show [tag_name] #查看标签详细信息

举个例子8(接例子7)

我们在最新的commit节点处创建标签

备注1:我们在添加标签时,最好保持工作区”干净”。
备注2:我们打标签时,标签是打在仓库区的内容里。如果我们在工作区修改完项目,没有提交,这时就算给最新的commit节点打上标签,标签绑定的内容,也不是我们在工作区刚刚修改的未提交内容,而是仓库区的最新commit内容。

我们查看一下标签列表(git tag):

再查看一下v1.0标签的详细信息(git show [tag_name]):

我们可以看到,具体信息有:

信息
Tagger: 标签的创建者
Date: 标签创建的日期(Fri Feb 14 17:53:57 2020 +0800)
附加信息(V1.0 基础版本)
在哪一个commit处打的标签(commit 66bc713)
Author: commit的提交者
Date: commit的提交时间(Fri Feb 14 11:26:02 2020 +0800)
commit最近的一次动作(mv IMG2.jpg)
commit最近的一次动作相比以前有了一个怎样的修改 (diff --git a/IMG2.jpg b/files/IMG2.jpg; similarity index 100%; rename from IMG2.jpg; rename to files/IMG2.jpg)

再看一下commit日志:

我们在commit编码为1cf34a7的节点也添加标签:

我们查看一下标签列表:

如果我们想回到v0.9标签,该咋整呢?我们接着看下面的知识点

6.去往某个标签节点

git reset --hard [tag]

7.删除标签

git tag -d [tag]

举个例子9(接例子8)

现在我想跳转到v0.9标签:

注意! 代码中,【–】和【hard】之间不能有空格,否则将不会执行成功。

看一下commit日志:

成功了!我们又回到v0.9标签的commit节点啦~

我现在又想跳转回v1.0标签:

这种通过打标签的方式,实现随心所欲的跳转,真是好处多多~妙哉妙哉

若,我现在觉得v0.9标签没用了,我们可以删除标签(git tag -d [tag]):

再查看一下标签列表:

嗯!只剩下v1.0了~


导航

上一节:移动或者删除文件
下一节:保存工作区

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!