赞
踩
一、git 概念
工作区(working):相当于我们本地的文件系统。
暂存区(staging):通过 git add
命令,将本地工作区的文件提交至暂存区。
本地仓库(local repo):通过 git commit
命令,把暂存区的所有文件提交至本地仓库。
远程仓库(remote repo):通过 git push
命令,把本地仓库的所有文件提交至远程仓库。
HEAD:通俗的讲,它指向当前分支正在使用的 commit_id
,当然它还有很多其他用法,之后我们用一篇新的博文来详细讲解。
二、git reset 原理
通过 git reset --hard <commit_id>
命令修改 HEAD 的指向的 commit_id
来达到版本回退的目的。
如何查找 commit_id
:
方法一:使用 git log 查看历史 commit_id
。
方法二:通过 HEAD 命令来代替 commit_id。
HEAD~ 回退一个版本
HEAD~~ 回退两个版本
HEAD~~~ 回退三个版本
HEAD~1 回退一个版本
HEAD~2 回退两个版本
HEAD~3 回退三个版本
git reset
包涵 soft、mixed、hard 三个参数项,这三个参数项控制了 reset 的回退罗辑,下面我们来了解下这三个参数。
git reset --soft <commit_id>
git reset --mixed <commit_id>
git reset --hard <commit_id>
假定我们的 git 仓库状态如下图所示,其中:
绿色表示
to be committed
的文件,也就是未 commit 的文件。
红色表示Untracked files
的文件,也就是未 add 的文件。
三、soft 参数项
soft 参数:回退本地仓库到指定版本,也就是只回退 commit 的文件。
执行 git reset --soft commit_B
命令后,仓库状态入下图所示:
四、mixed 参数项
mixed 参数:回退本地仓库、暂存区到指定版本,也就是回退 commit 和 add 的文件。该参数为 reset 命令的默认参数。
执行 git reset --mixed commit_B
命令后,仓库状态入下图所示:
五、hard 参数项
hard 参数:回退本地仓库、暂存区、工作区到指定版本,也就是回退 commit 和 add 的文件,对于 Untracked files
的文件是不做回退的。
执行 git reset --hard commit_B
命令后,仓库状态入下图所示:
五、注意注意注意
对于 Untracked files
的文件是不做回退的。
对于 Untracked files
的文件是不做回退的。
对于 Untracked files
的文件是不做回退的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。