Git-撤销/回滚操作

git结构和各操作之间的关系

git分层
WorkDir进行add操作将当前修改同步到 Index,执行commit操作同步到Head,执行push上传到Server。

撤销add操作

撤销add
git reset [HEAD/commitid] 使用HEAD或者commitid覆盖Index,不影响Head和WorkDir,如果是在commit之后执行这个操作相当于同时撤销了commit和add操作
git reset [HEAD/commitid] – file 针对某个文件使用HEAD或者commitid覆盖Index,不影响Head和WorkDir

撤销commit操作

撤销commit
git reset –soft HEAD^ 重置HEAD到上一版本,即撤销commit操作,不影响index和workdir。
git reset –soft HEAD^1 ^后面的数字表示恢复到哪个父提交的版本,一个提交可能会对应多个父提交,用于指定回到哪个
git reset –soft commitid 后面添加comiit_id指明回退到哪个版本

撤销commit和add

撤销commit和add
git reset –mixed HEAD^ 效果同git reset HEAD^
git reset –mixed HEAD^1 ^后面的数字表示恢复到哪个父提交的版本,一个提交可能会对应多个父提交,用于指定回到哪个

撤销commit、add操作,并将本地版本也重置为上一版本

撤销commit、add并重置本地
git reset –hard HEAD^ 重置head到上一版本,会覆盖index, –hard会使head、index、workdir都重置回之前的版本,远程服务器上不会变,如果希望远程服务器上也回到上一版本的话,就使用一下git push –force。
git reset –hard HEAD^1 ^后面的数字表示恢复到哪个父提交的版本,一个提交可能会对应多个父提交,用于指定回到哪个
git reset –hard commitid 用commit_id指定回到哪次 commit

git revert

git revert commitid 使用某一次提交覆盖当前,已达到恢复到某次的效果。revert之后执行一次git push同步到server。

git reset 和 git revert 的区别

git reset 简单暴力的将版本置回到某个版本,现在有过a、b、c、d四次提交,提交顺序为a、b、c、d,现在为d。使用git reset恢复到a之后,看git log,就只剩下a了,b、c、d都不见了。使用git revert恢复到a之后,看git log,会发现a、b、c、d都在,多了e操作,e操作为“revert a”。
原始log:
原始log
执行过git reset之后:
reset之后
可以看到commitid为7f****的log记录已经没有了

再来看一下revert:
revert
解决完冲突,revert之后:
revert之后
可以看到这里多了一条“Revert ‘commit add’”的记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值