git 教程 --git revert 命令
简介
在使用 git 管理代码过程中,很多人应该遇到过一些场景:我已经提交了 commit 信息,但是我想反悔,不想提交了这个信息,或者公共分支上我提交了 commit 信息,别人也提交了 commit,但是我的 commit 的代码有些问题,想撤回来不提交。
这种情况下有很多的方式来解决,无非是操作多少和风险的大小而已,比如:
公共分支上找到不同分支的父节点,reset 以后才重新提交,但是当 commit 信息混合到一起后,你想找都 commit 信息都困难。
还有一种相对省事的方法你在自己的分支上把不要的都干掉后重新提交,但是如果是上线时候,这样风险也很大。
当然还有其他的一些方式方法
还有一种相对简单的方式,那就是 revert 方式(反做撤销)。也就是这篇文章的主角。
git revert 基础用法
基础语法
只会反做 commit-id 对应的内容,然后重新 commit 一个信息,不会影响其他的 commit 内容
反做多个 commit-id
反做 commit-idA 到 commit-idB 之间的所有 commit
注意:使用-n 是应为 revert 后,需要重新提交一个 commit 信息,然后在推送。如果不使用-n,指令后会弹出编辑器用于编辑提交信息
冲突的相关操作
在 git 操作过程中,最不想看到的一种情况就是冲突,但是,冲突就是一个狗皮膏药,永远避免不了,revert 也跑不了这个魔咒,那么我们改怎么处理这个情况
合并冲突后退出
当前的操作会回到指令执行之前的样子,相当于啥也没有干,回到原始的状态
合并后退出,但是保留变化
该指令会保留指令执行后的车祸现场
合并后解决冲突,继续操作
如果遇到冲突可以修改冲突,然后重新提交相关信息
总结
Git reset 和 git revert 的区别
git reset 是回滚到对应的 commit-id,相当于是删除了 commit-id 以后的所有的提交,并且不会产生新的 commit-id 记录,如果要推送到远程服务器的话,需要强制推送-f
git revert 是反做撤销其中的 commit-id,然后重新生成一个 commit-id。本身不会对其他的提交 commit-id 产生影响,如果要推送到远程服务器的话,就是普通的操作 git push 就好了
版权声明: 本文为 InfoQ 作者【生之欢愉,时间同行】的原创文章。
原文链接:【http://xie.infoq.cn/article/a1e854826b000cf4c5405c1a0】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论