一、基本介绍
对于git reset,manual上有这么一句话:Reset current HEAD to the specified state.
我对这句话的理解是,git reset主要是对本地数据目录进行操作。
对于git reset,一切有图1:
注:图中的commit 1与commit 2代表两个不同的提交号
解释一下:
reset可以对本地数据目录进行重置(先这么简单的说吧),即①
亦可以对暂存区进行重置,即②
也可以对工作目录进行重置,即③
但是,只有如下组合:
1、只进行①;
2、进行①和②;
3、进行①和②和③。
有种情况,git reset HEAD,看上去只进行了②,但实际上也进行了①,只不过重置前与后没有变化,看上去没有重置。(假设此时HEAD指向提交号为commit 2的commit)
二、基本用法
git reset [-q] [<commit>] [--] <paths>… //-q [只打印出错误,可有可无的参数]
git reset (--patch | -p) [<commit>] [--] [<paths>…]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
三、用法详解
假设有状态图2:
即进行了如下操作:
echo "line1" >> file
git add file
git commit -m "add line1"
echo "line2" >> file
git add file
git commit -m "add line2"
echo "line3" >> file
git add file
echo "line4" >> file
用法1:首先是最简单的,这种默认的方式将重置到HEAD所指向的commit
git reset
那么状态图变为图3:
看上去只进行了②。
用法2:指定了要重置到HEAD
git reset HEAD
结果同上。
用法3:指定到某一指定的commit
git reset <commit 1>
那么状态图由图2变为图4:
(此时HEAD会指向提交号为commit 1的commit,而本地数据目录中的commit 2会保存在那里,如果你愿意,你还可以用reset重置到commit 2的状态)
用法4:带参数 --soft
git reset --soft<commit 1>
那么状态图和图2一样,只不过HEAD指向了提交号为commit 1的commit。
用法5:带参数 --hard
git reset --hard <commit 1>
那么状态图由图2变为图5:
同样的,HEAD指向了提交号为commit 1的commit。
至于带参数的 --mixed(默认,它和不带参数相同,即用法1),以及其他一些参数,这里就不提了。
用法6:带path参数
git reset -- file
由于图中只有一个file,所以它的状态图同图3相同,这里主要目的是将暂存区的某一指定的file(而不是所有的file)重置到与本地数据目录中的file相同。
四、案例
1、在工作目录中新建的一个文件,被添加到了暂存区,但是添加后突然发现这个文件是有问题的,那么可以用 git reset 或 git reset HEAD。
当然这种用法也不局限于删除新添加的文件的情况,任意对于暂存区进行了更改的操作都可以用git reset 或 git reset HEAD 进行恢复。
Ps:这是一种很常用的用法。
2、
待补充
more:
《Git 权威指南》
man git reset(强烈推荐看的)
- 大小: 54.9 KB
- 大小: 50.4 KB
- 大小: 48.6 KB
- 大小: 46.7 KB
- 大小: 49.3 KB
- 大小: 50.2 KB
分享到:
相关推荐
Step 4: 初始化 Git 存储库 接下来,需要初始化 Git 存储库。可以使用以下命令: ``` git init ``` Step 5: 查看隐藏文件夹 初始化完成后,需要查看隐藏文件夹。可以使用以下命令: ``` dir -a ``` Step 6: 将文件...
* When one step in multi step cherry-pick or revert is reset or committed, the command line prompt script failed to notice the current status, which has been improved. * Many GIT_TEST_* ...
### Git教程精要 #### 概述 Git是一款快速、开源且分布式的版本控制系统,它在软件开发领域中被广泛采用。Git不仅适用于备份源代码,还具备版本管理、团队协作支持、冲突解决以及分支管理和里程碑管理等功能。 ###...
$ git clean -fd && git reset HEAD . && git checkout . $ git checkout -b workshop origin/step-01-fresh-start 这将为您创建一个新的起点。 只需将step-01-fresh-start替换为适当的步骤分支名称即可。
git submodule foreach "git fetch gerrit && git reset --hard gerrit/master" cd qt3d scp -p -P 29418 codereview.qt-project.org:hooks/commit-msg .git/hooks/ git fetch gerrit git checkout --track -b ...
期待来自您的How to get thisgit clone git@github.com:CracKerMe/vue-ssr-cli.gitHow to previewcd vue-ssr-cli && npm inpm run devHow to publishnpm run buildnpm start项目截图Step by step:安装基本
健身房不平衡磁盘安装python -m ...基本用途import gym, gym_unbalanced_disk, timeenv = gym.make('unbalanced-disk-v0')obs = env.reset()for i in range(200): obs, reward, done, info = env.step(env.action_spac
用法 import gym , yumi_gym env = gym . make ( 'yumi-v0' ) env . render () observation = env . reset () while True : env . render () action = env . action_space . sample () observation , reward...
使用`env.reset()`初始化环境,然后通过循环执行`step`方法并调用`render`来显示场景。例如: ```python import gym import highway_env env = gym.make('highway-v0') env.reset() for _ in range(3): action = ...
- 使用`execute()`方法执行SQL命令,如创建表或插入数据。 - 使用`prepare()`创建`sqlitecpp::Statement`对象,用于执行带有参数的查询。通过调用`bind()`设置参数,然后迭代调用`step()`来获取结果集。 4. **...
链接到过去的Gridworld环境,以进行危险的转弯 这个gridworld健身环境基于Stuart Armstrong的 要求: 的Python 3 OpenAI体育馆 NumPy 安装 克隆此存储库,并使用pip3安装..._ = env.step(env.action_space.sample()
6. **项目管理与版本控制**:虽然未明确提及,但进行大型作业时,学生可能还需要学习如何使用版本控制系统(如Git),以便跟踪代码更改和团队协作。 7. **问题解决与调试**:实验过程中的源码可能会涉及错误调试和...
这个库的目标是让研究人员和开发者能够在使用dm_control进行强化学习实验时,享受到与使用Gym环境相同的便利性。通过这个包装器,你可以用熟悉的Gym API来操作dm_control中的物理模拟环境。 **安装过程** 非常简单...
key_step_exposure_compensation = 1 key_default_exposure_compensation = 0 ; only for facing back camera in android2.3, should be set in android4.0 used_zoom = 1 key_zoom_supported = true key_smooth_...
key_step_exposure_compensation = 1 key_default_exposure_compensation = 0 ; only for facing back camera in android2.3, should be set in android4.0 used_zoom = 1 key_zoom_supported = true key_smooth_...
key_step_exposure_compensation = 1 key_default_exposure_compensation = 0 ; only for facing back camera in android2.3, should be set in android4.0 used_zoom = 1 key_zoom_supported = true key_smooth_...
Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Command Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ...