git reset and git revert

git reset --hard xxx /git reset --soft xxx/[git revert xxx 这三个命令有什么区别?

git操作的三个区域。

  • Working copy代表正在工作的那个区域

  • Index暂存区域,也叫staging area,也就是add过的文件

  • 仓库区域,commit过的文件

Head指当前分支顶端,即最近的一个commit。

如果commit的集合是-A-B-C(head master),执行git reset B结果为-A-B(head master)-C。Git reset命令可以把当前的branch重置到另一个commit上。

三个命令都有返回重置的意思,但有区别

  • Git reset --soft xxx head会被重置,但是index区域和working copy都不会变化,

  • Git reset--hard xxx head会被重置,同时index和working copy也会变化以匹配新的head。这意味着数据会改动。

  • Git revert xxx将一次commit反向改回去并提交,版本会递增,不会影响之前的内容。

如下图,创建一个文件monday.txt并更改两次,得到3个commits。分别为version 1.0--version2.0--version3.0(head)

image

执行命令git reset --soft xxx返回到version2.0,并打开文件monday.txt,可以看到文件内容并没有改变,还是version3.0的内容

image
4.png

回到version3.0后执行git reset --hard xxx返回到version2.0并打开,内容变成的version2.0的内容

image

执行Git revert xxx撤销刚才的操作并更改内容重新提交

image
image

你可能感兴趣的:(git reset and git revert)