git------git reset 回退版本(--mixed、--hard、--soft)----(push后、add后、commit后)

推荐文章:

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 '备注信息'  即可覆盖上次信息合并为一次提交

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝世唐门三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值