`
songkang666
  • 浏览: 105531 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Git step by step 4 之reset用法及案例

    博客分类:
  • GIT
 
阅读更多
一、基本介绍

对于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
分享到:
评论

相关推荐

    搭建Git本地服务器详细步骤

    Step 4: 初始化 Git 存储库 接下来,需要初始化 Git 存储库。可以使用以下命令: ``` git init ``` Step 5: 查看隐藏文件夹 初始化完成后,需要查看隐藏文件夹。可以使用以下命令: ``` dir -a ``` Step 6: 将文件...

    Git-2.21.0-64-bit.zip

    * 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.docx教程

    ### Git教程精要 #### 概述 Git是一款快速、开源且分布式的版本控制系统,它在软件开发领域中被广泛采用。Git不仅适用于备份源代码,还具备版本管理、团队协作支持、冲突解决以及分支管理和里程碑管理等功能。 ###...

    php-summercamp-modelling-by-example:PHPSummerCamp 2015的研讨会资料库

    $ git clean -fd && git reset HEAD . && git checkout . $ git checkout -b workshop origin/step-01-fresh-start 这将为您创建一个新的起点。 只需将step-01-fresh-start替换为适当的步骤分支名称即可。

    Qt5 3D官方教程配套示例代码

    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 ...

    vue-ssr-cli:为初学者定制vue-ssr-cli,希望通过此ssr初始存储库收到您的建议

    期待来自您的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:安装基本

    gym-unbalanced-disk

    健身房不平衡磁盘安装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

    yumi-gym:带有小球的协作机器人yumi的Gym env

    用法 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...

    DQN自动驾驶——python+gym实现(csdn)————程序.pdf

    使用`env.reset()`初始化环境,然后通过循环执行`step`方法并调用`render`来显示场景。例如: ```python import gym import highway_env env = gym.make('highway-v0') env.reset() for _ in range(3): action = ...

    c++连接sqlite数据库

    - 使用`execute()`方法执行SQL命令,如创建表或插入数据。 - 使用`prepare()`创建`sqlitecpp::Statement`对象,用于执行带有参数的查询。通过调用`bind()`设置参数,然后迭代调用`step()`来获取结果集。 4. **...

    gym-alttp-gridworld:斯图尔特·阿姆斯特朗(Stuart Armstrong)叛逆转弯模型的体育馆环境

    链接到过去的Gridworld环境,以进行危险的转弯 这个gridworld健身环境基于Stuart Armstrong的 要求: 的Python 3 OpenAI体育馆 NumPy 安装 克隆此存储库,并使用pip3安装..._ = env.step(env.action_space.sample()

    南京信息工程大学-算法大作业-上机实验与报告内含源码和说明书.zip

    6. **项目管理与版本控制**:虽然未明确提及,但进行大型作业时,学生可能还需要学习如何使用版本控制系统(如Git),以便跟踪代码更改和团队协作。 7. **问题解决与调试**:实验过程中的源码可能会涉及错误调试和...

    gym-dmcontrol:围绕dm_control的包装器提供类似健身房的界面,反之亦然

    这个库的目标是让研究人员和开发者能够在使用dm_control进行强化学习实验时,享受到与使用Gym环境相同的便利性。通过这个包装器,你可以用熟悉的Gym API来操作dm_control中的物理模拟环境。 **安装过程** 非常简单...

    vga_ov5640_ruoge_kerun_r8_20160629_1426.7z

    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_...

    ruoge_kerun_r8_ov2643显示为VGA_20160630_1613.7z

    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_...

    ov7670_ruoge_kerun_r8增加摄像头的亮度20160630_1526.7z

    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_...

    Laraboot: Laravel 5 For Beginners

    Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Command Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ...

Global site tag (gtag.js) - Google Analytics