首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

git reset --mixed, - soft和--hard有什么区别?

git reset --mixed, --soft和--hard是git命令中用于撤销提交的选项。

  1. git reset --mixed:这个选项会撤销提交并将代码回退到指定的提交,同时保留修改的文件。它会将HEAD指针和分支指针移动到指定的提交,但不会更改工作区的文件内容。这意味着你可以重新提交修改后的文件。这个选项是默认的reset选项。
  2. git reset --soft:这个选项会撤销提交并将代码回退到指定的提交,同时保留修改的文件,并将这些修改的文件放在暂存区。它会将HEAD指针和分支指针移动到指定的提交,并将之后的提交都取消。这个选项允许你重新提交修改,而无需重新编辑文件。
  3. git reset --hard:这个选项会撤销提交并将代码回退到指定的提交,同时丢弃修改的文件。它会将HEAD指针和分支指针移动到指定的提交,并将之后的提交都取消。这个选项会丢弃所有未提交的修改,包括暂存区和工作区的文件。使用这个选项要谨慎,因为无法恢复丢失的修改。

这些选项在不同的场景中有不同的应用:

  • git reset --mixed常用于撤销提交并重新提交修改后的文件,适用于需要修改提交历史的情况。
  • git reset --soft常用于撤销提交并保留修改的文件,适用于需要修改提交信息或者合并多个提交的情况。
  • git reset --hard常用于彻底撤销提交并丢弃修改的文件,适用于需要完全回退到指定提交的情况。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于gitreset指令说明-softmixedhard

在开发过程中,git的版本管理越来越普及。在版本管理中,最常用最重要的是重置提交的版本,恢复后悔做了的事。大家都知道用reset命令。但是几种形态需要整理共享一下,也方便我自己查阅。...二、reset soft(更改HEAD)(恢复git commit的操作) 软重置。...本来origin的HEAD本地的HEAD一样,如果你指定--soft参数,Git只是单纯的把本地HEAD更改到你指定的版本那么,整个过程中,就HEAD的定义发生了变化,其他像Working Copy...3.mixed(default)(恢复git add的操作,包含恢复git commit的操作) --mixedreset的默认参数,也就是当你不指定任何参数时的参数。...1、soft: 重置git commit 2、mixed: 重置git commit git add 3、hard: 重置git commit git add 工作副本的修改。

2.7K20

Git面试常见问题

命令行 SourceTree SmartGit git add git stage什么区别 Git仓库的三个组成部分:工作区(Working Directory)、暂存区(Stage)、历史记录区(...基于这个原因,我们建议使用 git stage 以及 git diff --staged。 git resetgit revertgit checkout 什么区别?...用来标记reset指令的影响范围。 --mixed:会影响到暂存区历史记录区。也是默认选项。 --soft:只影响历史记录区。 --hard:影响工作区,暂存区历史记录区。...git revertgit reset的目的是一样的,但是做法不一样,它会创建新的commit的方式来撤销commit,这样能保留之前的 commit 历史,比较安全。...然后从文件的层面来说: git reset 只是把文件从历史记录区拿到暂存区,不影响工作区的内容,而且不支持 --mixed、--soft --hard

1K50
  • Git回滚撤销---吃上后悔药、坐上时光机

    //删除暂存区中的文件记录 git rm --cached 文件名 //或是下面的命令,推荐用下面这种 git reset HEAD 文件名 上面2种方法什么区别呢?...只不过个问题,暂存区中的内容工作区中的内容要不要跟着改呢?...Git可以让我们自己选——分别对应reset 的3个参数:mixedsofthard mixed:这个是默认值,效果是暂存区的内容会被替换,工作区的内容不变(也就是撤销commit,同时撤销add,...需要重新add操作); soft:效果是暂存区工作区的内容都不会变,也就是不撤销 add 操作; hard:这个效果是暂存区的内容会被替换,工作区之前被跟踪的文件内容会被替换 //回滚到上一次提交 git...reset --hard HEAD^ //或者 git reset HEAD^ --hard PS:如果只是想修改刚刚commit时写的提交备注,不用 reset,可以用下面的命令: //修改最新一次提交的说明信息

    59520

    git版本库代码回退的技巧

    如下图 命令语法格式如下: git reset [--soft | --mixed | --hard] [HEAD] 其中,HEAD对应的值git revert指令一样,可以使用多个^符号,也可以使用...该指令几个模式,分别是mixedsofthard。 --mixed 为默认,可以不用带该参数,用于重置版本库中的文件与某一次的提交(commit)保持一致,工作区文件内容保持不变。...如下示例 $git reset --soft HEAD^2 # 重置上上个版本 --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。...如下示例 $git resethard HEAD^3 # 重置上上上一个版本 $git resethard bae128 # 重置到某个版本。...$git reset --hard origin/master # 将本地版本的状态重置到远程的一样 注意:谨慎使用 –hard 参数,它会删除重置点之前的所有信息。

    1.5K10

    Git命令集之九——重置命令 原

    Git命令集之九——重置命令 1.git reset HEAD^     返回到上一个版本状态,需要注意,这个命令不会修改本地文件的内容,这些新的内容会变为未更新到缓存区的状态。...注意:git在进行reset操作时,是可以设置操作模式的,常用的模式hardsoftmixed3种。如果不进行设置,默认都是mixed模式的,上面的列出的reset命令都是工作在这个模式下的。...5.git reset --mixed     mixed模式是默认的模式,不指定的话也是这个模式。...6.git reset --hard     hard模式会将Git当前游标指针重置到指定提交同时将本地文件也恢复到游标所在的提交时的状态。新的文件修改将被丢弃。...7.git reset --soft     soft模式将Git游标指针重置到指定的提交,不修改本地文件状态,但是也不修改缓存区状态,所有的更改将默认作为下次commit的内容。

    40410

    Git 版本退回commit

    先用git log查看一下节点版本号commit_id $ git log 再用git reset退回 $ git reset -soft commit_id #回退到上一个 提交的节点 代码还是原来你修改的...$ git resethard commit_id #回退到上一个commit节点, 代码也发生了改变,变成上一次的 根据–softmixedhard,会对working tree...indexHEAD进行重置: git resetmixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commitindex信息 git reset...–soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。...如果还要提交,直接commit即可 git resethard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

    3.2K30

    git回退代码的n种方式

    暂存区:你使用git add添加之后的文件所在位置 git reset git reset commitId --soft:回退当前代码仓库到指定提交commitId,当前HEADcommitId之间的修改会保留...就是保留了add的状态 git reset commitId --hard:回退当前代码仓库的代码到指定commitId,这之间的代码会丢失。...如果要保留add的状态,就执行 git reset --mixed 如果不想保留add的状态,但是想保留修改。...git reset --hard HEAD^ 本地修改,执行了git addgit commit,并且执行了git push,但是此时其他人还未提交代码到同一分支。想撤回。...# 根据你是否想要保留修改代码,自由选择 --soft --mixed --hard git reset --soft HEAD^; # 执行要做的修改等操作,重新提交,或者丢弃代码 git push

    20510

    Git reset爬坑记

    在commit后,如果想修改一般resetrevert两种方法 其中reset适用于未push的情况,可以直接回溯到特定的节点 而revert相当于将目标的节点放到末尾进行了一次提交,适用于已push...git reset target # target可以为节点相对指针 如HEAD~1、也可以为节点commit的ID。...同时,reset不仅可以指向前面的节点也可以指向到后面的节点,如不小心reset到了C1,可以使用git reflog查看log,然后使用 git reset C3跳转回C3 ---- reset后可以加参数...如:--mixed --soft --hard param effect mixed(默认) 会保留提交的源码改动,只是将索引信息回退到了某一个版本,如果还需要继续提交,再次执行git addgit...commit soft 操作是软重置,只撤销了git commit操作,保留了git add操作 hard 工作区改变 返回到未提交也未add的时候,是具有破坏性,是很危险的操作,它很容易导致数据丢失

    43310

    git使用教程8-pycharm 使用 Reset 回滚到某次 commit 提交

    这时候想把代码回退到某次 commit 提交,可以使用gitreset 功能实现。...reset 回滚三种类型: Mixed 此为默认方式 回退一个版本,且会将暂存区的内容本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) soft 回退一个版本,不清空暂存区...Reset Type类型三种,默认Mixed: Mixed 此为默认方式 回退一个版本,且会将暂存区的内容本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) soft...Reset hard 前面 Reset HEAD 时候用默认是Mixed会发现上次提交的代码test_yoyoketang.py文件还在,变成了红色,如果想彻底回到上次的commit, 后面写的代码都不要...,Reset Type类型就选hard(慎重选择,要不然后面写的本地代码都找不到了) ?

    3.5K31

    Git 回退代码的两种方法对比

    HEAD^2 如果有git客户端软件,比如smartgit,可以直接在ui界面操作 然后再提交上去,重新生成一次撤回记录 git reset 操作 git resetreset,重置操作...,是重置HEAD的位置,将代码重置到某个版本,某个版本之后的提交都会被清掉,所以不是很安全,非特殊情况,不建议使用 git reset的语法格式为: git reset [--soft | --mixed...| --hard] [HEAD] –mixed(默认):默认的参数,将重置的更改留在工作区中 –soft:如果使用 --soft 参数,将重置的更改保存在暂存区 –hard参数:如果使用...--hard 参数,工作区暂存区都不会保存记录,所以建议不要使用这种模式 OK,下面使用git命令实践一下 # 找到要回退的commit版本号,复制 git log # 重置本地库版本回退 git...reset --mixed [commitid] # 同步到远端仓库,要写上分支名称 git push -f origin [branchName]

    39510

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

    命令:git merge --abort commit后回退指定版本 命令git reset - git reset --soft: 将分支回退到指定提交,工作区维持现状不变,暂存区会在现有基础上增加该...- git reset --mixed: (默认操作)将分支回退到指定提交,暂存区也被同步为该指定提交,工作区保持不变。...- git reset --hard: 将分支回退到指定分支,暂存区工作区都会被同步为该指定的提交。 git reset后的三个参数回退程度是依次递进。...soft最轻微,它不会重置当前工作区暂存区,只会将回退版本后续的提交加到暂存区。 mixed会改变暂存区,使它回退版本同步。 hard会重置工作区暂存区,使它回退版本一致。.../* git reset --soft target */ working index HEAD target working index HEAD ----

    1.7K10

    轻松掌握Git开发(三)版本的切换

    我们先用索引值切换到最新的版本,执行指令: git reset --hard 05f2f17 然后执行指令: git reset --hard HEAD^ 运行结果: ?...reset指令的参数介绍 学习了版本切换之后,同学可能会疑惑,git reset指令中的hard参数是什么意思?它是否有别的参数呢?...这里介绍reset指令的三个参数: soft mixed head 先看soft,这是官方文档对其的解释: Does not touch the index file or the working tree...看到这里,有些同学可能懵了,前面说了soft仅仅是改变了本地库中的HEAD指针,完全不触及索引工作树,照这样说,工作区的内容应该完全没有变化,可通过git status指令,终端却提示我们文件被修改了...mixed参数 现在我们版本是处于最新版本,我们通过mixed参数回退到最初始的版本试一试: git reset --mixed 43dc5b0 运行结果: ?

    39010

    git命令

    fetch --all # 将远程主机最新内容拉到本地 git reset --hard / # 将本地的状态回退到远程的一样 git pull ...git reset 命令语法格式如下: git reset [--soft | --mixed | --hard] [HEAD] **--mixed** 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交...文件的版本到上一个版本 $ git reset 052e # 回退到指定版本 **--soft** 参数用于**回退到某个版本**: git reset --soft HEAD...$ git reset --soft HEAD~3 # 回退上上上一个版本 **--hard** 参数**撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交...$ git reset --hard origin/master # 将本地的状态回退到远程的一样 10.git push免密 (1) 查看通信方式 git remote -v (2) 如果是

    49920

    Git开发教程 二 —— Git切换项目版本】

    我们先用索引值切换到最新的版本,执行指令: git reset --hard 05f2f17 然后执行指令: git reset --hard HEAD^ 运行结果: 版本回退到了第二次提交的时候...reset指令的参数介绍 学习了版本切换之后,同学可能会疑惑,git reset指令中的hard参数是什么意思?它是否有别的参数呢?...这里介绍reset指令的三个参数: soft mixed head 先看soft,这是官方文档对其的解释: Does not touch the index file or the working tree...status 看到这里,有些同学可能懵了,前面说了soft仅仅是改变了本地库中的HEAD指针,完全不触及索引工作树,照这样说,工作区的内容应该完全没有变化,可通过git status指令,终端却提示我们文件被修改了...mixed参数 现在我们版本是处于最新版本,我们通过mixed参数回退到最初始的版本试一试: git reset --mixed 43dc5b0 运行结果: 此时成功回退到最初始版本,我们看看

    1.2K10
    领券