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

我的更改在git重置后消失了--soft和git checkout。他们去哪里了?

在Git中,"我的更改在git重置后消失了--soft和git checkout。他们去哪里了?"这个问题涉及到Git的版本控制和分支操作。

首先,我们需要了解Git的工作区、暂存区和版本库的概念。

  1. 工作区(Working Directory):即我们实际进行代码编辑和修改的地方。
  2. 暂存区(Staging Area):用于暂存已修改的文件,等待提交到版本库。
  3. 版本库(Repository):存储项目的所有历史版本和相关元数据。

接下来,我们来解释"git reset --soft"和"git checkout"命令的作用和影响。

  1. git reset --soft:该命令可以将HEAD指针移动到指定的提交,但不会修改工作区和暂存区的内容。这意味着,通过该命令重置后,你的更改仍然存在于暂存区和工作区中,只是不再包含在最新的提交中。
  2. git checkout:该命令用于切换分支或恢复文件。当你使用"git checkout"切换分支时,Git会将工作区和暂存区的内容切换到目标分支的最新提交状态。如果你使用"git checkout"恢复文件,Git会将文件恢复到指定提交的状态。

综上所述,当你使用"git reset --soft"命令后,你的更改仍然存在于暂存区和工作区中,只是不再包含在最新的提交中。而当你使用"git checkout"命令切换分支或恢复文件时,Git会将工作区和暂存区的内容切换到目标分支的最新提交状态或指定提交的状态。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法提供相关链接。但腾讯云提供了丰富的云计算服务,你可以通过访问腾讯云官方网站,查找相关产品和文档来了解更多信息。

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

相关·内容

揭秘Git高手10个秘密武器:让你工作效率飙升!

可以使用以下命令在一个步骤中完成这两个任务: git checkout -b branchName -b标志git checkout命令一起使用,不仅允许我们创建一个新分支,还能立即切换到它。...当你尝试使用git checkout B切换到分支B时,Git阻止这个操作,并显示一个错误: 我们可以按照错误消息建议提交更改。但提交更像是一个固定时间点,并不是一个正在进行中工作。...在下面的截图中,高亮部分代表你可以轻松复制提交哈希值: 10、重置Git提交 假设你对项目进行了提交。然而,在检查,你意识到需要调整或完全撤销最后一次提交。...对于这种情况,Git提供这些强大命令。 软重置git reset --soft HEAD^ 当使用git reset --soft HEAD^时,执行一个软重置。...混合重置git reset --mixed HEAD^ 这是当你不指定--soft或--hard时使用git reset HEAD^默认行为。它撤销了最后提交,并从暂存区中移除了它更改。

19410

重新搞懂Git,掌握日常命令基本操作

它超越Subversion,CVS,PerforceClearCase等SCM工具,具有廉价本地分支,方便暂存区域多个工作流程等功能。 2、git&平台 git 是一个工具,是基础设施。...(--mixed、--soft、--hard、--merge),重置不要版本就找不回来了。...git diff head # 暂存区版本库比较 git diff –cached git checkout checkout命令用于版本库或者暂存区域中撤销更改到工作目录,同时也可用于切换分支...为了记忆错乱避免混乱,通常不用改操作,因为对于撤销完全可以用resetrestore,而对于分支切换可以用switch,他们从语义上来说贴切。所以这个操作你可以不用,也难得记!...# 把newbranch分支合并到master分支 git merge newbranch git rebase rebase merge作用都是一样,区别是rebase 没有分叉记录,他们合并两个分支

28360
  • 原创 | 想成为Git大神?从学会reset开始吧

    这是我们这个git专题目录,如果我们执行git checkout bee9ce,那么我们工作目录会被重置到这个提交之后状态。...soft参数表示我们reset时候只执行第一个步骤,也就是移动指针步骤。 ? reset之后我们发现test.txt这个文件并没有消失,仍然还在暂存区当中,只不过还没有被commit。...第二步(更新暂存区) 如果我们在reset时候加上了--soft参数,它会在执行第一步结束之后就退出,后面的第二步第三步都不会执行。...虽然这些提交被取消了,但是它们对应改动仍然存在,并且一样存放在暂存区当中,相当于执行完git add之后状态。 如果我们继续执行第二步,git会把暂存区也给重置,回到git add之前状态。...只要是提交了改动,即使reset,也可以通过reflog找回来,但是如果没有提交就没有办法,所有的改动都会消失。对于开发者来说,这是一个巨大打击,一定要切记慎重。

    44820

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

    #撤销指定文件 git checkout -- # 撤销所有 git checkout -- . git checkout – ....你对那个文件在本地任何修改都会消失——Git 会用最近提交版本覆盖掉它。 除非你确实清楚不想要对那个文件本地修改了,否则请不要使用这个命令。...命令:git merge --abort commit回退指定版本 命令git reset - git reset --soft: 将分支回退到指定提交,工作区维持现状不变,暂存区会在现有基础上增加该...- git reset --hard: 将分支回退到指定分支,暂存区工作区都会被同步为该指定提交。 git reset三个参数回退程度是依次递进。...soft最轻微,它不会重置当前工作区暂存区,只会将回退版本后续提交加到暂存区。 mixed会改变暂存区,使它回退版本同步。 hard会重置工作区暂存区,使它回退版本一致。

    1.7K10

    Git Pro深入浅出(二)

    (2)修改多个提交信息 为了修改在提交历史中较远提交,必须使用复杂工具。Git没有一个改变历史工具,但是可以使用变基工具来变基一系列提交。...重置揭密 (1)三棵树 理解resetcheckout最简方法,就是以Git思维框架(将其作为内容管理器)来管理三棵不同树。...# 显示 HEAD 快照实际目录列表 $ git cat-file -p HEAD Index:索引是你“预期下一次提交”–“暂存区域”,运行git add,代码就进入“暂存区域”。...–soft:indexworking directory中内容不作任何改变,仅仅把HEAD指向。...$ git status ? 说明:第二次提交test2被重置到了初始状态(上述示例为“Untracked”)!HEAD指针重新指向第一次提交commitID。

    1.2K31

    技能篇:git简易教程

    //重置到003444c7 --hard 模式 重置 HEAD 在当前分支到某次 commit 时,工作目录里新改动已经 add 到 stage 暂存区新改动会全都消失。...工作目录(workspace)、暂存区(index/stage)及本地仓库(repository)重置成目标 commit 內容,所以效果看起来等同于清空暂存区工作区 --soft 模式 --soft...模式在重置 HEAD 时,会保留工作目录暂存区中内容,并把重置 HEAD 所带来差异放进暂存区,保留工作目录(workspace)暂存区(index/stage)内容,只让 repository...在这种情况,Git会停止rebase并会让你解决 冲突;在解决完冲突,用 git add 命令更新这些内容索引(index), 然后,你无需执行 git-commit,只要执行git rebase...所以,两者区别决定使用方式,改动代码用 branch,不改动只查看用 tag 创建 tag 是基于本地分支 commit,而且与分支推送是两回事,就是说分支已经推送到远程,但是 tag 并没有

    57430

    Git 从入坑到成神,你只需要敲一遍命令!

    前几天还有网友差点同事干起来了,原因就是代码经常莫名其妙被“丢失”,究其原因就是 Git不熟,遇到冲突直接把人代码给覆盖掉了,才有后来“翻车事故”! Git 很简单,也很复杂。...git init 之后,往往需要把它远程仓库关联,则可以使用下面的命令进行关联。 ? 关联成功,我们就可以执行 git push 推送代码。 ? 第三个命令,git pull。...删除冲突标记(>>>>>>>>>>>>>>>>>>>行)。解决冲突,可以再次执行 git diff 查看冲突详情。...git reset --soft 将HEAD引用指向给定提交。索引(暂存区)工作目录内容是不变,在三个命令中对现有版本库状态改动最小。...也就是在给定提交所修改内容都会丢失(新文件会被删除,不在工作目录中文件恢复,未清除回收站前提)。 ? 下面是常用一些重置操作。 ?

    51810

    如何在 Git重置、恢复,返回到以前状态

    在本文中,我们将带你了解如何重置、恢复完全回到以前状态,做到这些只需要几个简单而优雅 Git 命令。 重置 我们从 Git reset 命令开始。...这些选项包括:hard 在仓库中去重置指向提交,用提交内容填充工作目录,并重置暂存区;soft重置仓库中指针;而 mixed(默认值)将重置指针暂存区。...实际上,它重置(清除掉)暂存区,并用你重置提交内容覆盖了工作区中内容。在你使用 hard 选项之前,一定要确保这是你真正地想要做操作,因为这个命令会覆盖掉任何未提交更改。...但是也要注意是,rebase “原始” C3 C5 仍然在那里 — 只是再没有一个分支指向它们而已。...你看到相关命名格式,重置任何一个东西: $ git reset HEAD@{1} 一旦你理解了当“修改”链操作发生Git 是如何跟踪原始提交链基本原理,那么在 Git 中做一些更改将不再是那么可怕

    3.9K20

    Git 命令

    ] 命令 描述 git reset –mixed 重置已提交和缓存区域 git reset –soft 仅仅重置已提交 git reset –hard 重置已提交、缓存区域工作目录 三棵树 Git...工作目录(Working Directory) 最后,你就有自己工作目录。 另外两棵树以一种高效但并不直观方式,将它们内容存储在 .git 文件夹中。...简单总结如下: 在工作目录编辑文件; git add ,Index 会保存并指向工作目录修改; git commit ,会提交新修改,HEAD 指向改新修改。...reset、checkout reset 命令会以特定顺序重写这三棵树,在你指定以下选项时停止: 移动 HEAD 分支指向 (若指定soft,则到此停止) 使索引看起来像 HEAD (若未指定...首先不同于 reset –hard,checkout 对工作目录是安全,它会通过检查来确保不会将已更改文件弄丢。 其实它还聪明一些。

    85720

    45 个 Git 操作场景,专治不会合代码

    (main)$ git reflog 你将会看到一个你过去提交(commit)列表, 一个重置提交。...可以通过把内容拿到你分支里,来解决这个问题: (develop)$ git checkout solution -- file1.txt 这会把这个文件内容从分支 solution 拿到分支 develop...如果你不准备继续在这个分支里工作, 删除这个分支本地拷贝会干净,使你不会陷入工作分支一堆陈旧分支混乱之中。...在这种情况下, 最好手动查看他们提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交, 再修改作者,参见变更作者。...(setting is in seconds) 不知道做错了些什么 你把事情搞砸了:你 重置(reset) 一些东西, 或者你合并错误分支, 亦或你强推了找不到你自己提交(commit)

    1K10

    经典45个git使用技巧与场合,专治不会合代码。

    (main)$ git reflog 你将会看到一个你过去提交(commit)列表, 一个重置提交。...可以通过把内容拿到你分支里,来解决这个问题: (develop)$ git checkout solution -- file1.txt 这会把这个文件内容从分支 solution 拿到分支...如果你不准备继续在这个分支里工作, 删除这个分支本地拷贝会干净,使你不会陷入工作分支一堆陈旧分支混乱之中(IDEA 中玩转 Git)。...在这种情况下, 最好手动查看他们提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交, 再修改作者,参见变更作者。...你把事情搞砸了:你 重置(reset) 一些东西, 或者你合并错误分支, 亦或你强推了找不到你自己提交(commit)

    1.3K20

    45个 GIT 经典操作场景,专治不会合代码

    (main)$ git reflog 你将会看到一个你过去提交(commit)列表, 一个重置提交。...可以通过把内容拿到你分支里,来解决这个问题: (develop)$ git checkout solution -- file1.txt 这会把这个文件内容从分支 solution 拿到分支 develop...如果你不准备继续在这个分支里工作, 删除这个分支本地拷贝会干净,使你不会陷入工作分支一堆陈旧分支混乱之中。...在这种情况下, 最好手动查看他们提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交, 再修改作者,参见变更作者。...你把事情搞砸了:你 重置(reset) 一些东西, 或者你合并错误分支, 亦或你强推了找不到你自己提交(commit)

    1.7K40

    45个 GIT 经典操作场景,专治不会合代码

    (main)$ git reflog 你将会看到一个你过去提交(commit)列表, 一个重置提交。...可以通过把内容拿到你分支里,来解决这个问题: (develop)$ git checkout solution -- file1.txt 这会把这个文件内容从分支 solution 拿到分支 develop...如果你不准备继续在这个分支里工作, 删除这个分支本地拷贝会干净,使你不会陷入工作分支一堆陈旧分支混乱之中(IDEA 中玩转 Git)。...在这种情况下, 最好手动查看他们提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交, 再修改作者,参见变更作者。...你把事情搞砸了:你 重置(reset) 一些东西, 或者你合并错误分支, 亦或你强推了找不到你自己提交(commit)

    1.1K10

    45 个Git经典操作场景,专治不会合代码

    (main)$ git reflog 你将会看到一个你过去提交(commit)列表, 一个重置提交。...可以通过把内容拿到你分支里,来解决这个问题: (develop)$ git checkout solution -- file1.txt 这会把这个文件内容从分支 solution 拿到分支 develop...如果你不准备继续在这个分支里工作, 删除这个分支本地拷贝会干净,使你不会陷入工作分支一堆陈旧分支混乱之中(IDEA 中玩转 Git)。...在这种情况下, 最好手动查看他们提交(commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交, 再修改作者,参见变更作者。...你把事情搞砸了:你 重置(reset) 一些东西, 或者你合并错误分支, 亦或你强推了找不到你自己提交(commit)

    81020

    headresetrevertrebase代码回滚全解:git提交记录背后原理

    本地仓库(.git):在工作区中有个隐藏目录.git,这就是 Git 本地仓库数据库。工作区中项目文件实际上就是从这里签出(checkout)而得到,修改内容最终提交后记录到本地仓库中。...执行以下命令回滚工作区修改:git checkout -- build.sh不过需要特别留意是这些改动没有提交到 Git 仓库,Git 无法追踪其历史,一旦回滚就直接丢弃。...命令是否抹掉历史适用场景git reset是,回滚历史将消失本地未push记录git revert否,历史记录保留,回滚重新生成提交记录回滚已push内容git reset回滚某次提交确保还没其他人提交之前...,进行强制回滚——重置HEAD(当前分支版本顶端)到另外一个commitgit reset --hard HEAD~2 git reset 代码撤回--hard --soft 及默认mixed--...--soft 虽然删除了最近两个提交记录,但是还保存提交所做更改——告诉Git重置HEAD到另外一个commit,但也到此为止index,working copy都不会做任何变化,所有的在original

    2.2K21

    Git 帮助手册

    (master)$ git reflog 你将会看到一个你过去提交 (commit) 列表,一个重置提交。...可以通过把内容拿到你分支里,来解决这个问题: (develop)$ git checkout solution -- file1.txt 这会把这个文件内容从分支 solution 拿到分支 develop...如果你不准备继续在这个分支里工作,删除这个分支本地拷贝会干净,使你不会陷入工作分支一堆陈旧分支混乱之中。...在这种情况下,最好手动查看他们提交 (commit),并把它们拷贝到一个本地新分支,然后做提交。 做完提交,再修改作者,参见变更作者。...upstream/master origin/master # 不知道做错了些什么 你把事情搞砸了:你 重置(reset) 一些东西,或者你合并错误分支,亦或你强推了找不到你自己提交

    4.3K30

    10分钟带你入门git到github

    git产生背景 开局先来一个故事吧,故事看完如果不想看枯燥无味指令,没关系已经把这篇文章内容录制成了一个视频,点击文末阅读原文就可以观看。...或者说你已经熟练掌握git使用了,可以直接跳到总结部分(一个好玩游戏)检验下你掌握熟练程度。...HEAD  git reset HEAD 在使用本命令,本地修改并不会消失,而是回到了上面 未使用git add 缓存代码,继续使用用git checkout -- filename,就可以放弃本地修改...git reset HEAD^ git reset --soft HEAD^重置HEAD到指定版本,不会修改暂存区暂存区就是回到上一次git commit 之前,适用于合并commit节点。...合并完主干分支,功能分支就可以删除了。 总结 以上命令基本上可以应付工作中大多数场景,不过git还有很多高级玩法。

    1K00

    git版本控制

    上面的例子中,在checkout,README.md文件恢复成了在修改之前(上次提交时)样子,并且工作目录是干净。...请在执行此命令时务必写上命令中--。 git reset三个用法与git reflog git reset,重置。这里讲三个用法,分别是--mixed、--soft--hard。...仅仅重置暂存区(index)至给定提交,不重置工作目录。 --soft:暂存区与工作目录都不会被重置,仅仅把HEAD指向给定提交。执行后效果是自给定提交以来所有的改变都是未提交。...$ git status -s M README.md $ cat README.md | tail -1 asdfgh 可见,暂存区被重置,而工作目录并没有被重置。...git reset --soft将帮助我们解决这个问题,它不会修改工作目录暂存区,只修改HEAD指向。

    89830

    【linux命令讲解大全】014.Git:分布式版本控制系统先驱常用命令清单(三)

    alias.ci commit 配置好再输入git命令时候就不用再输入一大段,例如我们要查看状态,只需输入: git st 中文乱码解决方案 git config --global core.quotepath...* # 取消已经暂存文件 git reset --mixed HEAD * # 同上 git reset --soft HEAD * # 重置到指定状态,不会修改索引区工作树 git reset...--hard HEAD * # 重置到指定状态,会修改索引区工作树 git reset -- files * # 重置index区文件 撤销操作 git revert HEAD # 撤销前一次操作...git revert HEAD~ # 撤销前前一次操作 git revert commit # 撤销指定操作 切换分支恢复文件 git checkout -- file # 取消对文件修改(...~1 [文件] # 将会更新working directory匹配某次commit git checkout --

    11410
    领券