我正在为TypeScript http://alm.tools/创建一个IDE。我真的很喜欢git diff gutter,实际上它有效:
但是,它基于已保存的文件(git diff
)上运行git diff -U0 path/to/the/file
(实际上I am forced to save the file if it isn't saved)
我想将文件的head
版本与我只在IDE内存中的某些文件区分开来,但尚未提交到磁盘。
答案 0 :(得分:0)
在git中你无法接受它。
<强> 为什么? 强>
您需要了解git diff的工作原理 非常简短(我解释的命令没有按照这里解释的顺序执行,我让你更容易理解这个过程):
执行git diff
时,git会列出已知文件。然后它将文件与工作目录中的文件进行比较(在现实生活中,它执行几个用于未跟踪,修改和删除的diff命令),这是您看到的修改列表。
同样的过程也适用于临时区域。
由于git必须处理物理文件(你可以在这里阅读完整的代码:(https://github.com/git/git/blob/master/diff.c)你不能使用必须有一个文件。
你可以做什么,但我认为它的矫枉过正是模拟git生成文件的方式并将blob保存在.git
文件夹下而磁盘上没有物理文件。这可以做到 - 在.git
下有一个文件没有一个phisocal,但你需要执行类似4-5命令的东西来创建这个文件。 (hash-object
,sha1sum
等)...
如果没有git可以比较的物理文件,你所要求的是不可能的。 git需要一个路径和一个sha-1进行比较,如果你没有物理文件则无法完成。