简介
在应用 git 治理代码过程中,很多人应该遇到过一些场景:我曾经提交了 commit 信息,然而我想反悔,不想提交了这个信息,或者公共分支上我提交了 commit 信息,他人也提交了 commit,然而我的 commit 的代码有些问题,想撤回来不提交。
这种状况下有很多的形式来解决,无非是操作多少和危险的大小而已,比方:
- 公共分支上找到不同分支的父节点,reset 当前才从新提交,然而当 commit 信息混合到一起后,你想找都 commit 信息都艰难。
- 还有一种绝对省事的办法你在本人的分支上把不要的都干掉后从新提交,然而如果是上线时候,这样危险也很大。
- 当然还有其余的一些形式办法
还有一种绝对简略的形式,那就是 revert 形式(反做撤销)。也就是这篇文章的配角。
git revert 根底用法
根底语法
git revert -n commit-id
- 只会反做 commit-id 对应的内容,而后从新 commit 一个信息,不会影响其余的 commit 内容
反做多个 commit-id
git revert -n commit-idA..commit-idB
- 反做 commit-idA 到 commit-idB 之间的所有 commit
- 留神:应用 - n 是应为 revert 后,须要从新提交一个 commit 信息,而后在推送。如果不应用 -n,指令后会弹出编辑器用于编辑提交信息
抵触的相干操作
- 在 git 操作过程中,最不想看到的一种状况就是抵触,然而,抵触就是一个狗皮膏药,永远防止不了,revert 也跑不了这个魔咒,那么咱们改怎么解决这个状况
合并抵触后退出
git revert --abort
- 以后的操作会回到指令执行之前的样子,相当于啥也没有干,回到原始的状态
合并后退出,然而保留变动
git revert --quit
- 该指令会保留指令执行后的车祸现场
合并后解决抵触,持续操作
- 如果遇到抵触能够批改抵触,而后从新提交相干信息
git add .
git commit -m "提交的信息"
总结
Git reset 和 git revert 的区别
- git reset 是回滚到对应的 commit-id,相当于是删除了 commit-id 当前的所有的提交,并且不会产生新的 commit-id 记录,如果要推送到近程服务器的话,须要强制推送 -f
- git revert 是反做撤销其中的 commit-id,而后从新生成一个 commit-id。自身不会对其余的提交 commit-id 产生影响,如果要推送到近程服务器的话,就是一般的操作 git push 就好了