git fsck:找回被误删记录

QuibblerQuibbler 2020-05-29 约 3 分钟 2303 次阅读

git fsck:找回被误删记录

git  stash用来暂存修改,平时使用apply而不是pop,一次不小心使用了pop把stash暂存的修改都提出来,

git stash pop

而且又大意直接把修改全部checkout .,暂存里面现在又没有记录了,这可是没有提交的一下午的工作啊,虽然还能记得大致修改,但是再重写一遍心态崩溃!

有没有什么方式能恢复以前暂存过的记录呢?有!

其实git stash pop 其实并没有真正地将文件删掉的,而是删除引用而已。借助fsck命令可以找回哪些“遗失”的修改,这些其实是“悬空对象"(dangling objects),不手动git gc会一直存在在磁盘上占用空间,但是不会占用太多,而且是找回丢失的工作的最后一根稻草。

fsck有很多命令,查看文档或使用--help查看所有选项。值得一提的是Linux命令中也有一个fsck命令,用于检查与修复 Linux系统档案。

git frck --help

查看帮助,可以发现一个选项--unreachable,

#Print out objects that exist but that aren’t reachable from any of the reference nodes.
    git fsck --unreachable

显示所有曾经的提交但是已经不可达的记录。这个时候就一个一个试呗,主要关注commit相关的记录:

git show 733130b11878c013559a6596335709ecf0a2d015

显示这个id记录的相关修改内容,如果是曾经的修改。需要回复的话,直接恢复到工作区即可:

git stash apply 733130b11878c013559a6596335709ecf0a2d015

还可以将文件差异打包

git diff --name-only |  xargs tar -rf /d/diff.tar

参考博客:

        记一次误删 git stash 文件恢复操作

        如何恢复丢弃的 git stash 数据

git打包本次修改的文件

相关推荐

git rebase调整commit提交的顺序
Git

git rebase调整commit提交的顺序

git rebase调整commit之间顺序一连提交了几笔commit,想调整一下顺序,把其中一笔提交置顶拿到最前面来,专门修改这一笔提交。当然如果想修改某一笔提交,可以reset到那笔commit,进行修改,完成之后再把之后的提交cherry-pick回去。git log查看提交记录,每笔提交记录太多,可以让每笔提交仅显示一行查看 --oneline。使用git rebase -i进入编辑,之前

1.4w
git blame:显示文件的每行提交记录信息
Git

git blame:显示文件的每行提交记录信息

git blame:显示文件的每行提交记录信息git blame对文件的每行信息都进行注释。能看到关于该行修改的每一次commit的哈希标签、作者和提交日期。Intellij IDEA在打开文件的行数右键点击Annotate显示文件每一行的记录信息。应该用的就是这个命令实现的功能。

5.5k
Git可视化工具:Sublime Merge
Git

Git可视化工具:Sublime Merge

Git可视化工具:Sublime Merge同事推荐了一个Git 可视化客户端:Sublime Merge ,由知名文本编辑器 Sublime Text 开发商打造。自己平时用的则是最好用的Git GUI工具:SourceTree,也体验了下Sublime Merge,用起来还不错。直接点击下载或购买后,安装即可。功能免费,完整功能无限制使用。但是订阅内容(比如更换主题)付费。Sublime Me

2.8k