前面有学到git中的大部门知识,基本够用,但是,代码回滚也是平时遇到的最多的。这一节就来仔细的说下git中的比较容易搞混淆的几个命令:
git pull
和 git fetch
, git reset
和 git revert
。
git reset 和 git revert
reset
根据这个英文单词的意思直译的就是重置
,就是还原的意思,在git中也是一样,用来将HEAD指针还原(指向
)到某个提交(commit
)。他是还原一段的,也就是说,如果这个commit 在log的中间位置,那么这个commit 之后的提交有可能都会消失掉!所以这个命令是蛮危险的。
revert
根据这个英文单词的意思直译的就是恢复,撤销
。git里面,用来撤销某一次提交(commit
) 。他只会撤销这一次提交,无论这个commit在log的哪个位置,不会影响上下的提交。而且他会将撤销的作为一个新的commit提交。
下面,举例子来说吧:
➜ shop git:(master) git log --oneline
git log
前面已经讲过,这个命令用来显示提交的log 记录,加上-- oneline
表示,在一行精简的显示log信息。
我在项目下运行下:
643a5ee 关闭老爷
3deb0e4 add 3
c755be6 new
889b027 + 聊天窗口右侧公告样式.
896ccee 仓鼠日志
be3b53a Merge remote-tracking branch 'origin/dev' into dev
5921f2d 移动端
上面是一部分log。比如,我刚错误提交了关闭老爷
(643a5ee)功能,这一步,我想撤销,怎么办呢?可以用上面的哪个命令呢?其实2个都可以用。
git reset 3deb0e4
或者 git reset HEAD~1
把指针移动643a5ee
到的上一次提交,就表示还原了。
或者git revert 643a5ee
表示撤销这次提交。也可以。
git reset 还原已经commit的用法
git reset
命令的使用最多的2种形式是:
git reset commitId
git reset –hard commitId
不加任何参数
表示是软重置,它会改变本地HEAD的指针, 指向