撤销或回退版本,删除文件的方法。

Git篇: 撤销和删除

此文章编写于笔者刚开始学习git之时,所以不会有很多深奥的知识与历史,如有疏漏与错误,尽管联系笔者,我会及时修改,避免影响读者观感与知识理解。

在上一篇文章中,我们已经学会了如何简单添加本地的git仓库,接下来,我们将深入学习如何使用git来管理我们本地仓库的代码。

在开始之前,我希望大家明确一个小小的时间线。

即:版本库是最旧的,工作区是最新的,而暂存区在二者之间

撤销修改

在日常生活中,我们常常会遇到一些错误,比如,我们不小心说错了话,做错了事,我们总是会想,要是我没***,要是我不***……之类的想法,这种想法在使用git时也是非常常见的,接下来,我们就来学习一下如何撤销修改。

为了只观的看出不同方法的差别和其应对情况,以下表格请认真查看:

首先,我们先后往工作区中添加了gitcode文件,随后执行了add和commit命令,所以我们的工作区、暂存区和版本库都有了相同的文件,即git文件和code文件。


各种方法撤回修改

对于reset方法:

HEAD是指版本库目前所在的版本,后面的n表示的是你想回退几次版本,回退到上一个版本的话,n=1。

git reset [--option] HEAD~n

–soft:回退到指定版本,保留工作区和暂存区,不删除工作区的修改。

–mixed:回退到指定版本,保留工作区,删除暂存区的修改。

–hard:回退到指定版本,删除工作区和暂存区的修改。

工作区(git code) 暂存区(git code) 版本库(git code) reset选项
git code git code git –soft
git code git git –mixed (默认选项)
git git git –hard(慎用)

解释:由于是先添加git文件,然后添加code文件,所以,code文件是新的,git文件是旧的,而给--soft就是让版本库回到旧状态,即只有git的时候。--mixed就是让版本库和暂存区都回到旧状态。--hard就是让版本库、暂存区和工作区都回到旧状态。

当然,你也可以直接使用git reset HEAD,默认就是--mixed选项。

使用git reflog可以查看历史记录,包括各种回退记录都能看到。


对于checkout –方法:

git checkout -- <file id>可以撤销工作区中指定文件的修改,适合精细化操作,对单个文件撤销。


对于各种情况的撤销修改

如果说上个版本只有git代码,而code代码则是作为新增文件存在同时也是我们要撤回的代码,那么我们面对不同的情况,可以进行以下操作:

目的 工作区(git code) 暂存区(git code) 版本库(git code) 操作
撤销工作区中的内容 git code checkout –
撤销工作区、暂存区中的内容 git code git code (reset –mixed搭配checkout –) 或者reset –hard
撤销工作区、暂存区和版本库中的内容 git code git code git code reset –hard
撤销暂存区、版本库中的内容 git code reset –mixed
撤销版本库中的内容 git code reset –soft

删除文件

在git中,删除文件也是一个非常常见的操作,接下来,我们就来学习一下如何删除文件。

删除工作区中的文件

方法一:

使用rm <file>可以删除工作区中的文件,但是,此时版本库和暂存区中的文件并没有被删除,所以,我们需要使用git add <file>来将删除操作添加到暂存区,随后使用git commit -m "删除文件"来将删除操作提交到版本库。


方法二:

使用git rm <file>可以删除版本库中的文件,此时,工作区和暂存区中的文件也会被删除,所以,我们不需要再使用git add <file>来将删除操作添加到暂存区,随后使用git commit -m "删除文件"来将删除操作提交到版本库。

其他的删除其他区的操作这里就不展开了,比如git reset HEAD <file>,毕竟本系列主打一个能用就行。

总结

本篇文章主要讲述了如何撤销修改和删除文件,希望对大家有所帮助。