Git撤销已经push到远程分支的commit
有时想要撤销已经push到远程仓库的commit,将代码还原为commit之前的样子,应该如何做呢?
如果只有自己使用的分支:可以使用git reset命令
git log 查看需要还原的commitId,如下截图,
我们需要撤销ffe4a的提交,即将代码还原到3082966的commitId上
回退代码
执行git reset --soft commitId,soft可以换为hard,但两者有区别
- soft:表示会保留当前工作区,即保留commit前修改的内容
- hard:表示会撤销工作区内容,即不保留commit前修改内容
撤销后再次git log查看是否撤销成功
覆盖远程分支git push origin 分支名 --f 即可
如果是两人共同开发这个分支,那么使用reset去回退是有问题的,如果他人本地仓库的代码比远程仓库代码新,他人此时拉取代码的话,是不能拉到你回退后的代码的,就算他人pull代码,你的提交记录依旧在, 而且如果他人有了新的修改进行了提交,你回退的版本又会重新出现。
这时候我们可以使用git revert 命令
git revert commitId 来撤销某次commit
再git pull origin 分支名称 -f 下即可