使用命令行上的数据进行Git Diff

时间:2016-05-09 09:06:25

标签: javascript node.js git typescript

我正在为TypeScript http://alm.tools/创建一个IDE。我真的很喜欢git diff gutter,实际上它有效:

enter image description here

但是,它基于已保存的文件(git diff)上运行git diff -U0 path/to/the/file(实际上I am forced to save the file if it isn't saved

我想将文件的head版本与我只在IDE内存中的某些文件区分开来,但尚未提交到磁盘。

https://git-scm.com/docs/git-diff我找不到办法。

1 个答案:

答案 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-objectsha1sum等)...

<强> 摘要

如果没有git可以比较的物理文件,你所要求的是不可能的。 git需要一个路径和一个sha-1进行比较,如果你没有物理文件则无法完成。