最近写RN 的东西,不小心将一些不必要的代码提交到了远程分支,what fuck y
, 宝宝一下子心里不高兴了。咋办?赶紧回滚,可是git 有 reset
和 revert
两个命令,用哪个合适呢?
先让我们搞明白几个名词
-
HEAD
这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交 -
Index 暂存区
index也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commit -
Working Copy
working copy代表你正在工作的那个文件集
reset
git reset [--soft | --mixed | --hard]
1 . --soft 撤销commitid至暂存区
2 . --mixed 撤销版本库和暂存区至工作区
3 . --hard 使用版本库覆盖暂存区和工作区
使用--hard
会发现 远程版本库的代码是没有变化的啊
revert
如果代码提交到了远程仓库,我们只能使用 revert
,该操作不会影响提交记录,方便我们查看历史记录
- revert 用于反转提交,使用一个新的提交来消除历史修改。
总结:
- reset 会删除指定的commit,HEAD 指针后移
- revert 不会删除commit,会产生新的commit,HEAD 指针前移
- 如果代码已经push 到远程 就用
revert
,否则用reset
网友评论