要撤销已经推送到远程仓库的提交,可以使用下面的命令来完成操作:
首先,需要查看当前分支上最新的提交记录。运行以下命令获取提交历史信息:
git log --oneline -n <number_of_commits>
其中
确定要撤销的提交所在位置后,可以通过 revert 或者 reset 两种方式进行撤销。
如果想保留被撤销提交引入的更改并创建一个新的提交来反转该变化,则可以使用 revert 命令。运行以下命令:
git revert <commit_hash>
其中
如果希望直接删除特定的提交及其相关修改,而不创建新的提交,则可以使用 reset 命令。有三种模式可选择:soft、mixed(默认) 和 hard。根据情况选择合适的模式。
运行以下命令:
# soft mode
git reset --soft <commit_hash>
# mixed mode (默认)
git reset --mixed <commit_hash>
# hard mode
git reset --hard <commit_hash>
注意,
无论使用 revert 还是 reset,都需要再次执行 push 命令将更改推送到远程仓库:
# 如果当前所在分支已与远程分支关联,则只需执行 push
git push
# 如果当前所在分支尚未与远程分支关联,那么 push 时需要指定远程分支名称
git push origin <远程分支名称>
# 由于此时分支版本号应该是落后于远程分支的版本号,git push 会报错如下:
# error: failed to push some refs to 'xxxxxx'
# hint: Updates were rejected bacause the tip of your current branch is behind
# 解决办法是 **强制更新** ,执行命令如下:
git push -f 或者 git push --force
请注意:撤销已推送的提交可能会影响其他开发人员的工作,因此在执行此操作之前,请确保了解其可能造成的影响,并与团队成员进行沟通。
【扩展】使用git cherry-pick命令选择性地撤销远程提交
如果只需要撤销某一个文件或几个文件的提交,可以使用git cherry-pick命令选取需要的提交进行撤销。
总结:
根据实际情况选择合适的撤销方式。