git reset HEAD -filename
git reset HEAD 将file退回到unstage区
git reset HEAD .
git reset --soft HEAD^
--HEAD^
指上一个版本,也可以写成HEAD~1(HEAD~2回退2个commit)
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--mixed
不删除工作空间改动代码,撤销commit,并且撤销git add .
(git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的)。
--hard
删除工作空间改动代码,撤销commit,并且撤销git add ,回退版本
commit修改注释
git commit --amend
git revert -m 【要撤销的那条merge线的编号】 【merge前的版本号】
- # 1 commit 之前的撤销
-
- 未添加至暂存区的撤销(add 之前)
- git status
- git checkout .
-
- 已添加至暂存区的撤销(add 之后,有或者没有commit操作都可以执行)
- git reflog
- git reset --hard bca6882(relog 中展示的commitId)
-
- # 2 push之后的撤销
-
- push操作后的撤销不想将本次的操作生效
-
- git revert commitId(提交的id)
-
- git push origin brandname 此次操作就会撤销掉上一次的push
- 会生成一条revert 的提交记录
-
- 将userName 改为username 经过一系列的git操作
- git add .
- git commit -m "commit"
- git push orgin
- 进行git revert commitId
- 再进行git push origin branchname
- userName 还是userName,
- 再revert 的时候,
- git revert
- git push origin branchname
- userName 还是改为username.
-
- 总结为:
- git revert 为奇数时生效,为偶数时,失效
-
- # 3 git 回滚:
- git 回滚到某一次commit操作,在该commitId之前的操作,将全部失效(此方法不建议使用,有风险),
- git reset --hard commitId
-
- git push origin branchname --force (强制覆盖,因为是不可逆的,不建议使用)
-
-