Git Stash恢复

一、Git Stash是什么?

Git stash是一个非常有用的命令,它可以让你“储藏”当前的工作,并且自动切换到干净的工作目录。这个功能通常用于临时存储你的工作,以便你可以在切换分支或者处理其他问题时,随时返回到原来的状态。它可以保存未提交的代码,包括修改、暂存和未跟踪的文件。

二、如何使用Git Stash储藏?

使用“git stash”命令可以将所有未提交的修改(包括已暂存和未暂存的修改)保存到一个“储藏”中。

$ git stash
Saved working directory and index state WIP on master: 53c09c3 added the index file
HEAD is now at 53c09c3 added the index file

我们可以使用“git stash list”命令列出所有的储藏:

$ git stash list
stash@{0}: WIP on master: 53c09c3 added the index file

我们可以使用“git stash apply”命令,将储藏中的修改应用到当前分支,相当于恢复了之前被暂存的代码。我们也可以指定储藏的ID号来应用某个特定的储藏。如果不指定ID号,则默认使用最新的储藏来恢复。

$ git stash apply
# 等价于
$ git stash apply stash@{0}

如果你不想保留储藏,可以使用“git stash drop”命令。如果你希望应用一个储藏并且将其从列表中删除,可以使用“git stash pop”命令。

$ git stash drop stash@{0}
# 或者
$ git stash pop

三、如何使用Git Stash恢复被清理的Stash?

有时候我们可能会意外清理掉了自己储藏的内容,这时候我们需要用到另一个命令“git fsck”来检查是否有文件被清理过。在执行该命令之前,需要确定储藏遗失的提交ID。

$ git fsck --full --no-reflog

然后你应该看到一个类似下面这样的输出:

Checking object directories: 100% (256/256), done.
Checking objects: 100% (392/392), done.
broken link from    tree d2de8bf97b21f2e74251e0a8facfbe7d9d4c3e5e
              to    blob 2fdea27ad5c5a54f0520d8e78621b1c9054cb5a9
broken link from    tree 49fa1ad36b6e0a31b4c82015f9b4c59675aad2c2
              to    blob 2fdea27ad5c5a54f0520d8e78621b1c9054cb5a9
dangling commit ed961247cb59473b5ad7e0993f21da5f3b294de3
dangling commit 6d0153cd180afe4d5769c59acd176a2f72a187c7

这里的“dangling commit”中包括储藏的提交内容。我们可以使用“git show”命令来查看这个提交的详细信息:

$ git show ed961247cb59473b5ad7e0993f21da5f3b294de3

输出的信息中应该包括你想要恢复的内容。然后,我们可以使用“git cherry-pick”命令将这个提交应用到工作目录中:

$ git cherry-pick ed961247cb59473b5ad7e0993f21da5f3b294de3

四、如何使用Git Stash恢复未保存的修改?

有时我们可能会在工作目录中进行了一些修改但是并没有执行任何提交操作,这时候可以使用以下命令将这些修改储藏起来,以备后续恢复使用:

$ git stash save "message"

然后,我们可以使用“git stash list”命令查看所有的储藏列表:

$ git stash list

现在我们可以使用“git stash apply”命令来恢复储藏的内容:

$ git stash apply
# 或者应用某个特定的储藏
$ git stash apply stash@{2}

之后,我们可以继续在工作目录中进行修改或者提交操作。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/237714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:06
下一篇 2024-12-12 12:06

相关推荐

  • Git secbit:一种新型的安全Git版本

    Git secbit是一种新型的安全Git版本,它在保持Git原有功能的同时,针对Git存在的安全漏洞做出了很大的改进。下面我们将从多个方面对Git secbit做详细地阐述。 一…

    编程 2025-04-29
  • 如何优化 Git 性能和重构

    本文将提供一些有用的提示和技巧来优化 Git 性能并重构代码。Git 是一个非常流行的版本控制系统,但是在处理大型代码仓库时可能会有一些性能问题。如果你正在处理这样的问题,本文将会…

    编程 2025-04-29
  • Idea2022变更Git地址

    本文将从以下几个方面对Idea2022变更Git地址进行详细阐述: 一、GitHub上修改Git仓库地址 1、登录GitHub,找到需要修改的Git仓库 2、在代码页面点击右上角的…

    编程 2025-04-28
  • 通过提交信息搜索-使用git

    本篇文章重点讲解如何使用git通过提交信息来搜索。我们将从多个方面介绍如何使用git来搜索提交信息,并提供相应的代码示例以供参考。 一、搜索方式 Git提供了三种搜索方式,分别为:…

    编程 2025-04-27
  • Java项目Git发布流程规范

    本文旨在介绍Java项目在使用Git进行发布时的流程规范。Git作为一个版本控制工具,其功能十分强大,但是对于Java项目进行发布时,需要我们根据标准化的流程规范来执行操作,以确保…

    编程 2025-04-27
  • 使用Pycharm从Git上Clone项目的步骤

    在本篇文章中,我们将会详细介绍如何使用Pycharm工具从Git上Clone项目。 一、打开Pycharm并进入Welcome界面 首先,我们需要打开Pycharm工具,并进入We…

    编程 2025-04-27
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Git Tag命令

    一、Tag是什么 Tag是一个指向Git仓库中某个commit对象的指针,通常用于标记软件版本发布的重要时间点。Tag不同于分支,分支可以移动并在其上进行提交;而Tag是指向特定提…

    编程 2025-04-25
  • Git push 被拒绝该如何解决

    Git push 被拒绝是Git使用过程中常见的问题之一,本文将从多个方面介绍Git push 被拒绝的常见原因及解决方法。 一、导致git push 被拒绝的原因及解决方法 Gi…

    编程 2025-04-25
  • 学习Git分支

    一、初识learngitbranching learngitbranching 是一个交互式学习Git分支的网站,旨在帮助用户更好地理解分支工作流程和提交历史。该网站提供了一个可交…

    编程 2025-04-25

发表回复

登录后才能评论