前言
Git 的安装以及基本配置已在前一节写了,现在你已经正式可以开始使用了。正如在 Word 操作中最常用到的是 Ctrl+Z一样,在 Git 中,你也可能经常需要撤销操作,在此之前,先得明白 Git 几个常见的概念,Git 的区域划分。然后,了解一次最常见的工作流是如何操作的,了解经过操作后文件会的状态如何,会在哪个区域,最后才学习如何撤销每一步操作。
Git 区域划分
先看一张图
这张图很清晰明了的展示了 Git 的几个区域,分别为
- working directory,工作区,所有的文件修改在这进行
- staging area,暂存区,修改完毕后的文件,将文件快照放入暂存区
- local repo,本地仓库区,提交暂存区的文件,将文件快照永久性存储到 Git 仓库目录
- remote repo,远程仓库区,位于服务器,保存来自所有客户端的提交
一次完整的工作流
按照上图中的步骤,使用 git status
可以查看任何时刻仓库文件的修改状态
第一步:编辑文件,查看状态
git status
修改了READEME.md文件,此时文件在工作区,状态为modified
第二步:添加文件到暂存区
git add READEME.md
此时文件已经到了暂存区,等待被提交到本地仓库
第三步:提交到本地仓库
git commit -m "update READEME.md"
提交本地仓库成功
第四步:将服务器的拉取到本地仓库
git pull origin master
第五步: 提交到服务器
git push -u origin master
这里暂时没有提到多人协同工作时常见的 conflict(冲突) 问题以及开发新功能用到的分支,不用着急,Git 分支也会在接下来的文章中介绍。
每个步骤如何撤销
撤销工作区文件
git checkout filename
撤销暂存区文件至工作区
git reset filename
撤销本地仓库的某次至工作区
git reset commit
可以通过 git log
和 git reflog
查看最近的 commit,找到最近的那次提交,然后通过 reset 命令撤销该操作
上面有的操作对象是文件,有的是 commit,为什么呢?先弄清一点,把缓存区的文件(一个或多个文件)提交到本地仓库之后,Git 就会以某种识别码的形式来记录这次提交,这个识别码是 独一无二的。所以只要是提交到本地仓库后,操作对象就由文件变为 commit.
总结
了解了基本的工作流和常见的撤销操作之后,再加上接下来介绍的分支操作,基本上就覆盖了日常大部分使用场景。如果能再了解下 Git 的工作原理,想必学习起 Git 来是事半功倍的。
想当时学习 Git 走了不要弯路,总是一股脑的把错误信息扔到搜索引擎,然后按照搜来的结果“不知其所以然”的贴到命令行,运气好的时候,问题会被解决(没有报错),运气不好,会接二连三的报错,这时就陷入了恶性循环,到最后,你都不知道最初的问题是什么了。所以,在学习 Git 的操作同时,也要了解 Git 的原理,结合 Git 自带的提示/报错信息,大部分错误都基本上可以很快的解决。
当遇到实在解决不了的问题时,恭喜你,你变强了!