推荐文章:
https://blog.csdn.net/asoar/article/details/84111841
git reset 和 git revert :https://blog.csdn.net/yxlshk/article/details/79944535
push后:
git撤销提交到远程仓库的commit
git如果想撤销已经提交到远程仓库的commit,可以首先在本地仓库使用git reset –hard [commit_id]将本地仓库重置为需要撤销的版本,然后使用git push origin -f 进行提交,这样可以强制远程仓库与本地仓库一致
比方说我想 返回到 a1edaeb37a5 这个commit.
首先现在本地进行还原。
git log 查看对应的id
git reset –hard a1edaeb37a5 //对应想要回撤处的提交id,即可!!!
然后强制push 到远程仓库
git push origin -f
这样的操作方式可以使得撤销的commit不在log日志当中,或者也可以使用git revert命令进行撤销。(我没用过^^)
远程仓库的撤销其他方式:
1. git本地版本回退
Git reset --hard commit_id(可用 git log –oneline 查看)
2. git远程版本回退
git push origin HEAD --force #远程提交回退
下面的命令也可以实现远程版本回退
git reset --hard HEAD~1 (~n) 回退前n次
git push --force || -f
git add 后git commit前:
用命令git reset HEAD <file>可以把暂存区的修改(git add后commit前)撤销掉(unstage),重新放回工作区:
用命令git reset HEAD <file>:
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
=================
想直接丢弃工作区的修改时,用命令
git checkout -- 单个file名 | . (.代表所有,即丢弃所有更改)
=================
小结
又到了小结时间。
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区(git add到暂存区)时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
git commit后push前(保存在本地仓库)
撤销commit且未push操作的git命令
回退命令
HEAD表示最近最新的版本
git reset <--hard> HEAD^ 回退到上一个版本
git reset <--hard> HEAD~3 回退到之前的3次提交后
git reset <--hard> commit_id 回退到指定的commit_id处
--hard(<>中不加即只撤销commit的提交文件,撤回的代码不改变)会退到某个版本,但是不会保留之前的修改
若想撤回到指定的commit_id:
第一步:
git log
找到想要撤销的commit_id
第二步:
git reset --hard commit_id (撤销commit提交以及代码的修改)
或
git reset commit_id (仅仅撤销本地仓库的commit提交,代码不变)
git reset 的几种模式
git reset主要有–soft –mixed –hard 三种方式
HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销(git add .) 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
--soft
不删除工作空间改动代码,撤销commit,不撤销git add .
--hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
如果不指定reset的模式,默认使用–mixed模式。
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
或者: git commit --amend -m '备注信息' 即可覆盖上次信息合并为一次提交