我将git-review与function 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与原件/原件之间没有任何更改。正在提交审核 毫无意义。”
如何丢失更改?有办法还原吗?
答案 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?