【git系列】git命令之撤销回退篇

撤销工作区修改

  • 工作区修改代码,并未存入暂存区。
    适用场景:工作区对某段逻辑代码进行优化,突然发现存在一定的问题,性能不一定比之前提交的代码优秀,放弃本次对文件的修改。
#撤销指定文件
git checkout -- <file> 
# 撤销所有
git checkout -- .   
git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会恢复。
    
请务必记得 git checkout -- <file> 是一个危险的命令。 你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。

撤销暂存区修改

  • 代码git add 到暂存区,但并未commit提交。
#撤销所有
git reset HEAD . 
#撤销指定文件
git reset HEAD <file>

这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化。

撤销提交修改

撤销提交修改,即将commit操作撤销。

#回退最近的一次提交,即将本次提交撤销,回到暂存区
git reset --hard HEAD^  

暂存修改

适用场景:开发过程,需求逻辑尚未实现,突然要切换版本解决问题,但是本次修改的代码并不想提交本地仓库,使用statsh命令暂存修改。

#暂存本地修改
git stash
#查看暂存的信息
git stash list
#应用最近一次暂存的内容
git stash pop  
#应用指定版本的暂存内容
git stash apply stash@{1}
#清空暂存栈
git stash clear

撤销合并

适用场景:版本之间的合并,如果合并过程中,出现同文件同区域代码冲突,自己无法判断应用哪个版本的逻辑,写该逻辑的同事不在,放弃本次合并。

命令:git merge --abort

commit后回退指定版本

命令git reset

- git reset --soft: 将分支回退到指定提交,工作区维持现状不变,暂存区会在现有基础上增加该commit之后的提交。
- git reset --mixed: (默认操作)将分支回退到指定提交,暂存区也被同步为该指定提交,工作区保持不变。
- git reset --hard: 将分支回退到指定分支,暂存区和工作区都会被同步为该指定的提交。

git reset后的三个参数回退程度是依次递进。
soft最轻微,它不会重置当前工作区和暂存区,只会将回退版本后续的提交加到暂存区。
mixed会改变暂存区,使它和回退版本同步。
hard会重置工作区和暂存区,使它和回退版本一致。

/* 
    git reset --soft target
*/

working   index   HEAD   target         working  index  HEAD
-------------------------------------------------------------
A          B       C       C               A       B     C
A          B       C       A               A       B+C   A



/* 
    git reset --mixed target
*/

working   index   HEAD   target         working  index  HEAD
-------------------------------------------------------------
A          B       C       C               A       C     C
A          B       C       A               A       A     A


/* 
    git reset --hard target
*/

working   index   HEAD   target         working  index  HEAD
-------------------------------------------------------------
A          B       C       C               C       C     C
A          B       C       A               A       A     A
  • 51
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

溪~源

你的鼓励将是我源源不断的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值