git 的撤销操作:reset、checkout 和 revert
这三个命令都可以用于撤销。
reset 和 checkout 可以作用于 commit 或者文件,revert 只能作用于 commit。
工作区有改动,但未 add
git checkout readme.txt
git checkout .
git checkout -- readme.txt // 以防判断成分支
add 之后,但未 commit
git reset HEAD
git reset HEAD <readme.txt>
commit 之后,但未 push
git reset
git reset HEAD~2
git reset --hard HEAD~100 // 往上 100 个版本
还有几个参数可选
–soft: 只撤销了 git commit 操作,保留了 git add 操作
–mixed: 撤销了 git commit, git add 操作
–hard: 撤销了至工作区
git revert
git revert HEAD~
git revert < 普通 commitId>
git revert <merge commitId> -m <parent> 必须选择合并自哪个分支,一般为 1,2,可通过 git show <merge commitId> 展示
revert 通过新建一个 commit 来撤销一次 commit 所做的修改,是一种安全的方式,并没有修改 commit history。
push 到远程
git reset HEAD~
git push -f
参考链接:Git 之 revert
如果撤销后,发现自己不想撤销了,那么也可以还原
git reflog // 查看 commitId
git reset commitId
远程分支合并后,可以直接在远程撤销分支合并
删除本地 untracked files
git clean
git clean -n // 告诉你哪些文件会被删