git revert .vs. git reset .vs. git rebase
1. git rervert的工作方式是:将一个老的commit的改动完全找出来,并且在新的tip处运行反操作,最终清除老commit的改动; git revert的应用场景多在对public repo的历史信息反悔;
2. git reset <commit>:则通过重写历史,将commit之后的所有commits都全部丢弃, 正因为这个特性,git reset往往只存在于本地的commit历史整理反悔;一旦做了push动作分享到public repo中,我们不应再reset到那个public commit;
如git reset, git rebase,以及git commit -amend,我们都不要对已经push到public的commit试图做修改
No one shall rebase a shared branch(只要分支被push到public库中,我们都不要对这个共享分支做rebase)
积小流以汇江海,细微做起