撤销或回退版本,删除文件的方法。
Git篇: 撤销和删除
此文章编写于笔者刚开始学习git之时,所以不会有很多深奥的知识与历史,如有疏漏与错误,尽管联系笔者,我会及时修改,避免影响读者观感与知识理解。
在上一篇文章中,我们已经学会了如何简单添加本地的git仓库,接下来,我们将深入学习如何使用git来管理我们本地仓库的代码。
在开始之前,我希望大家明确一个小小的时间线。
即:版本库是最旧的,工作区是最新的,而暂存区在二者之间。
撤销修改
在日常生活中,我们常常会遇到一些错误,比如,我们不小心说错了话,做错了事,我们总是会想,要是我没***,要是我不***……之类的想法,这种想法在使用git时也是非常常见的,接下来,我们就来学习一下如何撤销修改。
为了只观的看出不同方法的差别和其应对情况,以下表格请认真查看:
首先,我们先后往工作区中添加了git和code文件,随后执行了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 |
checkout – | ||
| 撤销工作区、暂存区中的内容 | git |
git |
(reset –mixed搭配checkout –) 或者reset –hard | |
| 撤销工作区、暂存区和版本库中的内容 | git |
git |
git |
reset –hard |
| 撤销暂存区、版本库中的内容 | git |
reset –mixed | ||
| 撤销版本库中的内容 | git |
reset –soft |
删除文件
在git中,删除文件也是一个非常常见的操作,接下来,我们就来学习一下如何删除文件。
删除工作区中的文件
方法一:
使用rm <file>可以删除工作区中的文件,但是,此时版本库和暂存区中的文件并没有被删除,所以,我们需要使用git add <file>来将删除操作添加到暂存区,随后使用git commit -m "删除文件"来将删除操作提交到版本库。
方法二:
使用git rm <file>可以删除版本库中的文件,此时,工作区和暂存区中的文件也会被删除,所以,我们不需要再使用git add <file>来将删除操作添加到暂存区,随后使用git commit -m "删除文件"来将删除操作提交到版本库。
其他的删除其他区的操作这里就不展开了,比如
git reset HEAD <file>,毕竟本系列主打一个能用就行。
总结
本篇文章主要讲述了如何撤销修改和删除文件,希望对大家有所帮助。