简介

在应用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就好了