Git reset命令的使用
weiweilong关注赞赏支持Git reset命令的使用
Git reset 命令有三个主要选项:git reset --soft; git reset --mixed; git reset --hard;
git reset --soft
将HEAD引用指向给定提交。索引(暂存区)和工作目录的内容是不变的,在三个命令中对现有版本库状态改动最小。
git reset --mixed(git reset默认的模式)
HEAD引用指向给定提交,并且索引(暂存区)内容也跟着改变,工作目录内容不变。这个命令会将索引(暂存区)变成你刚刚暂存该提交全部变化时的状态,会显示工作目录中有什么修改。
git reset --hard
HEAD引用指向给定提交,索引(暂存区)内容和工作目录内容都会变给定提交时的状态。也就是在给定提交后所修改的内容都会丢失(新文件会被删除,不在工作目录中的文件恢复,未清除回收站的前提)。
用表格看起来会更清楚些:
操作一下看一下实际效果:
首先在一个版本库中修改追踪文件,然后提交,description叫做 add button
使用git log 查看历史提交
copy记录add button 的前一次提交 add label 的哈希ID “7c5a658fbceb904ad877c4254d183e68aed1ddd0”,作为我们reset的给定提交。
git stauts 查看一下当前版本库中文件状态
显示nothing to commit ,在add button 提交后未对版本库中文件做修改
执行git reset --soft 7c5a658fbceb904ad877c4254d183e68aed1ddd0 命令,然后使用git status 查看文件状态。
然后再使用git log 查看历史提交记录。
会发现add button 已经没有了,版本库已经回滚到add label提交的状态了,但是在我们add button 提交修改的文件 里面修改的内容没有丢失,只是回到了未提交的状态。
将文件再次提交,同样取名add button ,继续git reset --mixed 操作。
同样是回滚到了add button 之前的add label 提交。被修改的文件内容也没有丢失,但是修改的文件为红色了(未执行add 操作)。
将文件再次提交,同样取名add button ,继续进行git reset --hard 操作。
执行完git reset --hard 命令后,使用git status 查看文件状态,回滚到add label 提交,add button被修改的文件内容已经没有了,丢失了。版本库中的文件已经完全回到刚提交完add label时的状态。
git reset 根据需要使用不同的命令,使用 --hard时一定考虑回滚后文件的丢失!
推荐阅读更多精彩内容
- git的安装与基本使用方法 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/... 落魂灬阅读 6,270评论 3 赞 47
- git命令整理 git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi... 新篇章阅读 3,877评论 0 赞 24
- Git命令大全 Add & Commit git init 初始化一个 Git 仓库(repository),即把当前所在目录变成... 冬絮阅读 1,505评论 0 赞 7
- 车过西宁(诗) 此刻,这列名为敦煌之星的动车飞奔在路上 所有的一切都快速向后退去 冬日清冷的山 沉默的河,孤独的村庄 以及落光了叶... 兰州郭郭阅读 59评论 1 赞 4
- Python标准库系列之subprocess模块 本系列文章来源: https://blog.ansheng.me/article/python-full-stac... 伪码农小杨阅读 3,679评论 0 赞 3