是否可以将两个相同的文件分段并比较(差异)两个分阶段的版本?文件myclass.java的示例:
我可以比较分阶段文件版本1和分阶段文件版本2吗?
THX!
答案 0 :(得分:4)
第二个git add
会覆盖第一个,但你仍然可以获得差异。
# edit edit edit
$ git add myclass.java
# edit some more
现在git diff
将显示分阶段文件和最后编辑之间的差异。如果您想要暂存文件和最后一次提交之间的差异,则必须执行git diff --staged
。
答案 1 :(得分:3)
Git索引是提交文件的阶段;请查看此StackOverflow answer以获取更多信息。当您为提交暂存文件时,索引会反映最新的暂存信息。第二次暂存文件将更改Git索引以反映工作目录中的文件内容。
但是,通过一些额外的工作,您可以看到文件的内容与每个阶段的内容一样。您可以在每个阶段后使用git ls-files
获取文件blobs的列表,然后您可以使用diff
或其他差异工具进行比较。
这里有一个小样本会话作为例子。
$ git init
Initialized empty Git repository in /home/user/tmp/.git/
$ echo "foo" > foo
$ git add foo
$ git ls-files --stage
100644 257cc5642cb1a054f08cc83f2d943e56fd3ebe99 0 foo
$ echo "bar" > foo
$ git add foo
$ git ls-files --stage
100644 5716ca5987cbf97d6bb54920bea6adde242d87e6 0 foo
$ git cat-file blob 257cc56 > foo.257cc56
$ git cat-file blob 5716ca5 > foo.5716ca5
$ diff foo.257cc56 foo.5716ca5
1c1
< foo
---
> bar
但这需要做很多工作,需要仔细规划和存储blob哈希值才能完成。