git多个commit只push一个

git 如何在本地有多个commit的情况下,push其中特定的一个commit?
eg:
commit 03
commit 02
commit 01

此时本地有三个commit,工作区是干净的,因为某些原因,我现在只需要push commit 02 这个提交,请问,应该如何做?

revert命令
想要撤回中间某次commit,可以使用命令

git revert commit_id

如果这次提交是别的分支合并过来的,按照提示可知需要加参数-m

git revert -m commit_id

然后如果有冲突,解决冲突,然后重新commit,push到远程分支,这时远程仓库会多了一个commit,而原来想要撤销的那条commit记录还在,但是最终代码,也就是最新的commit,已经把不要的代码移除了,此时达到了我们的目的。

如果想撤销的不是一次commit,而是连着的几次,那么

git revert --no-commit commit1..commit2

注意这是一个左开右闭区间,即不包括 commit1,但包括 commit2

只提交02的话,你可以把03撤销,把01提交的改回去,再提交,再push