像 git stash和 git stash pop 这样的命令是用来搁置(藏匿)和恢复我们工作目录中的变化的。在本教程中,我们将学习如何在 git 中恢复隐藏的修改记录。
在工作目录中存储更改在我们的例子中,假设我们已经克隆了一个 git repo 。现在,让我们对 readme.md 文件做一些修改,只需在最后添加一行,并检查我们工作目录的状态。
$ git statuson branch masteryour branch is up to date with 'origin/master'.changes not staged for commit: (use git add ... to update what will be committed) (use git restore ... to discard changes in working directory) modified: readme.mdno changes added to commit (use git add and/or git commit -a)在这里,我们可以使用 git stash 命令来暂时搁置我们的修改。
$ git stashsaved working directory and index state wip on master: sdfkdsx updated pom.xml现在,如果再做一次 git status,我们会看到我们的工作目录是干净的。
$ git statuson branch masteryour branch is up to date with 'origin/master'.nothing to commit, working tree clean恢复存储的变化并找到哈希值让我们来看看如何恢复隐藏的修改,并找到与隐藏的提交相关的哈希值。
将隐藏的修改恢复到工作目录中我们可以像这样把隐藏的修改带回到我们的工作目录中。
$ git stash popon branch masteryour branch is up to date with 'origin/master'.changes not staged for commit: (use git add ... to update what will be committed) (use git restore ... to discard changes in working directory) modified: readme.mdno changes added to commit (use git add and/or git commit -a)dropped refs...正如我们在最后一行看到的那样,git stash pop 不仅恢复了被存储的修改,而且还删除了对其相关提交的引用。
当终端打开时定位哈希值如果我们的终端仍然是开放的,我们可以很容易地找到执行 git stash pop 后产生的哈希值。在我们的例子中,显示在最后一行的哈希值是59861637... 。
在终端关闭后恢复哈希值即使我们已经关闭了终端,我们仍然可以通过以下方式找到我们的哈希值。
$ git fsck --no-reflogchecking object directories: 100% (256/256), done.checking objects: 100% (302901/302901), done.commit 598616...现在我们可以看到被丢弃的储藏室的提交哈希值了。
恢复被丢弃的储藏库通常情况下,一旦我们应用了一个储藏库条目,我们就不需要它了。然而,在某些情况下,我们可能希望在丢弃一个储藏库条目之后再去找它。例如,如果使用 git reset -hard head 会丢掉我们工作目录中所有未提交的修改。在这种情况下,我们可能希望召回一些早期的藏匿修改,尽管它们被丢弃了。
使用哈希值来恢复储藏的内容使用哈希值来处理悬空的提交,我们仍然有可能恢复这些变化。
$ git stash apply 59861637f...on branch masteryour branch is up to date with 'origin/master'.changes not staged for commit: (use git add ... to update what will be committed) (use git restore ... to discard changes in working directory) modified: readme.mdno changes added to commit (use git add and/or git commit -a)我们可以看到,我们的工作目录已经恢复了先前所隐藏的变化。
找到所有的哈希提交如果我们没有现成的哈希值,我们可以找到它。
git fsck --no-flog | awk '/commit/ {print $3}'这里,我们把 -no-flog 选项和 awk 结合起来,只为我们过滤出哈希值。
总结在这篇文章中,我们看到了git stash 是如何工作的,以及当我们使用它时它是如何丢弃一个条目的。当我们知道一个被丢弃的条目的哈希值时,我们仍然可以使用它,以及如何找到提交的哈希值.
荣耀v9play和红米Note5A哪个值得买?区别对比评测分析
荣耀手环4评测 值不值得入手
云呼叫中心|云呼叫中心和传统呼叫中心价格区别在哪?
高通试验首个超密集小基站
电子芯闻早报:10核处理器是上限,不会再高了
如何在 Git 中恢复隐藏的修改记录
普瑞均胜:电动汽车市场化发展需要汽车级的BMS
IR威尔士招贤纳才,大举扩资
TDK推磁传感器用于创造心脏检查市场
报道称三星GalaxyS21仍不支持Android11的无缝更新
Matter1.2标准发布,推进行业智能新发展
什么是SOC?SOC做什么?
经常听耳机对耳朵会造成伤害吗?使用耳机时注意这5点不伤耳朵
AMEYA360:尼得科nidec恩布拉科变频压缩机介绍
如何测试LTE-Advanced网络中的载波聚合
FX2N系列PLC硬件外部结构及型号含意
服务器系统是什么,服务器系统的作用
工信部发布《2100MHz频段5G移动通信系统基站射频技术要求(试行)》
苹果官宣:搭载A14X的新Mac要来了
载波泄露也会影响信号的EVM