前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【git系列】git命令之撤销回退篇

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

作者头像
沁溪源
发布2020-12-07 10:42:33
1.6K0
发布2020-12-07 10:42:33
举报
文章被收录于专栏:沁溪源沁溪源

撤销工作区修改

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

撤销暂存区修改

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

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

撤销提交修改

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

代码语言:javascript
复制
#回退最近的一次提交,即将本次提交撤销,回到暂存区
git reset --hard HEAD^  

暂存修改

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

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

撤销合并

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

代码语言:javascript
复制
命令:git merge --abort

commit后回退指定版本

命令git reset

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

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

代码语言:javascript
复制
/* 
    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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 撤销工作区修改
  • 撤销暂存区修改
  • 撤销提交修改
  • 暂存修改
  • 撤销合并
  • commit后回退指定版本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档