git revert
git revert用来撤销一个已经提交了的快照. 但不是从项目历史中移除这个commit, 而是生成一个新的commit, 老的commit还是保留在历史项目里面的. 这样做的好处是防止了项目丢失历史.
用法
git revert <commit>
生成一个新的commit, 撤销老的<commit>的所有修改(注意了这个<commit>之后的commit的修改还在, 你只是撤销了这一个<commit>的修改), 老的commit在项目历史中还是可见的.
讨论
当你想撤销项目中某一个完整的commit的时候可以使用revert.
Reverting vs Resetting
git revert是撤销某个单一的commit-revert不是通过删除一系列的commit回到项目的某个commit之前的状态, 而是新增一个commit.
revert比起reset来说有两个优点. 第一, revert不会修改项目的历史, 是一个安全的操作. 第二, git revert可以作用于项目历史中的任意一点, git reset只能作用于当前commit之前的commit. 例如, 如果你想使用reset撤销一个老的commit, 你将删除这个老的commit之后的所有commit, 然后重现commit这些commit.
例子
下面的例子简单的演示了git revert的用法. 提交一个快照, 然后立即使用revert撤销他.
# Edit some tracked files # Commit a snapshot
git commit -m "Make some changes that will be undone" # Revert the commit we just created
git revert HEAD