git 撤銷本地提交
情形1:只撤銷commit,但是不想將commit下的代碼撤銷
撤銷上一次的commit (commitId 可以通過 git reflog 進行查看,下面所有的HEAD~x 都可以換成相應的commitId)
- git reset HEAD~
或者 - git reset HEAD~1
或者 - get reset
commitId
如果提交了多個commit,那么可以通過修改HEAD~后的數字,如撤銷前3次的commit
- git reset HEAD~3
情境2:撤銷commit,並且將commit下的代碼也撤銷掉
- git reset --hard HEAD~1 或者 git reset --hard
commitId
注:使用了 --hard 之后,最新的commit命令下修改的內容將會完全被撤銷,慎用。
git 撤銷遠程提交
- git reflog 查找需要回退的版本號
- git reset --hard
commitId回退到 commitId 版本 - git push -f 強制推送到遠程分支(因為此時本地分支滯后於遠程分支,必須-f 強制推送才行)
還有一個命令 git revert 也可以用來進行版本回退,需要特別注意是:
它會產生一個新的提交,雖然代碼回退了,但是版本是向前的。當需要回滾公共遠程分支的時候,可以使用該命令進行回滾。git revert 命令的好處就是不會丟掉別人的提交。
前面講的撤銷遠程分支是只有自己一個人提交到遠程分支的情況,還有一種情況是公共遠程分支,如果別人也提交了,這個時候就不能簡單的回滾了,否則會把別人的提交也給覆蓋掉,
這個時候就需要使用到git revert 命令了,可以查看下面的參考文章
參考文章
