关于 git reset --hard xxx , git reset --soft xxx 和git revert xxx

背景知识

HEAD

这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交

index

index也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commit

Working Copy

working copy代表你正在工作的那个文件集

使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)。

git revert

撤销某次操作(commit),并把这次撤销当做一次新的提交,版本号递增,就是用一次新的提交(commit)来回滚之前的commit。


image.png

git reset

git reset 常用于代码回滚,是直接删除指定的 commit, 但是文件和修改会移动到 workspace 工作区.

git reset --soft xxx:

soft命令会让版本回到某次commit后的状态,但并不改动工作目录中的文件。执行git reset --soft后
可以看出版本退回了q1,但之前提交的文件变成了有新改动的状态。


image.png

git reset --hard xxx

hard HEAD~1 (或是版本号)意为将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本


image.png

二者的区别:

git reset 是把HEAD向后移动了一下
git revert 是HEAD继续前进,只是新的 commit 的内容和要 revert 的内容正好相反,能够抵消要被revert的内容.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 15,973评论 5 147
  • 芳当初建立一个这样的小群,并要求每周交三篇作业,其目的是想让大家共同成长! 我上次作业没完成,又没交罚款,确实是我...
    静_631c阅读 85评论 0 0
  • 有些人沦为平庸浅薄,有的人金玉其外,而败絮其中。可不经意间,你会遇到一个彩虹般绚丽的人,从此以后,其他人就不...
    三只耳朵的菲菲阅读 79评论 0 0
  • 墓地在农田边上,隔着一条石渣路,四周是种下的细小柏树编成的篱笆墙。 坟茔或大或小,或疏或密;立有石碑的,也宽窄高低...
    劳寒阅读 272评论 0 0
  • 我最近真的忙坏了,今天终于可以放松一下了,于是就去看了一场电影。电影《快把我哥带走》在8月17日全国正式上映了,这...
    小余爱读书阅读 371评论 0 2