添加了`git review`后丢失的文件?

时间:2019-01-18 14:10:50

标签: git git-review

我将git-reviewfunction mapOptional<I = any, R = unknown>(input: null, callback: (value: I) => R): null function mapOptional<I = any, R = unknown>(input: undefined, callback: (value: I) => R): undefined function mapOptional<I, R>(input: I, callback: (value: NonNullable<I>) => R) : I extends (undefined | null) ? I : R function mapOptional<I, R>(input: I, callback: (value: I) => R) { if (input === null) { return null; } if (input === undefined) { return undefined; } return callback(input); } mapOptional(undefined, x => x.toFixed()) // type is undefined mapOptional(null, x => x + 5) // type is null mapOptional(56, x => x + 5).toFixed() // works declare const optionalNumber: number | undefined const r = mapOptional(optionalNumber, x => x + 5) // undefined | number if (r) { console.log(r.toFixed()) } 一起使用以进行代码检查。

使用此工具时,我遇到了一个非常严重的问题:我丢失了更改。

这是我所做的:

  • 添加了Gerrit的文件
  • 忘记了git add
  • 执行了git commit

所有添加的文件现在都消失了,更改丢失了。 git review --reviewers johndoe说什么也没改变。

git status给了我以下信息:

  

“ HEAD与原件/原件之间没有任何更改。正在提交审核   毫无意义。”

如何丢失更改?有办法还原吗?

1 个答案:

答案 0 :(得分:0)

自从完成git add以来,Git仍应在其内部结构中保留已更改文件的blob,尽管没有文件名。有多种方法可以恢复它们,但是您需要花费一些耐心和法医工作,才能将blob链接到它们所属的文件。

此处记录了Git对象的内部存储:https://git-scm.com/book/en/v2/Git-Internals-Git-Objects

您也许可以使用git-recover恢复已更改的文件:https://github.com/ethomson/git-recover

关于这个不同但相关的问题的讨论也可能会有所帮助:What happens if i interrupt git add command?