有时候你希望将你现在的代码返回到前一次提交,并保留所有之前的变化。你希望在前一次提交与当前HEAD之间提交新的代码。
首先,以你希望退回的提交处新建一个分支为 'revert-branch' 。在这个例子中,我们希望退回到前一次提交(假设当前分支为'master'),并且在这个提交上再做修改。
- git branch revert-branch HEAD^
接下来切换到新的分支:
- git checkout revert-branch
传授一个绝招:从master软恢复到新分支的HEAD。软恢复将改变HEAD的状态,但并不影响工作树。
- git reset --soft master
现在,我们执行 git status, 我们将看到我们想要恢复的提交的变化。我要撤销添加'second.txt',但也可能是更复杂的变化:
- $ git status
- # On branch revert-branch
- # Changes to be committed:
- # (use to unstage)
- #
- # deleted: second.txt
- #
现在让我们提交这个 'reversal':
- git commit -m "reverted to initial state."
原文链接:http://www.oschina.net/translate/git-tips-revert-with-new-commit
译文链接:http://www.oschina.net/translate/git-tips-revert-with-new-commit