2017-10-10 63 views

回答

0

已更新由torek提供的信息;不知道他为什么不把它作为答案,因为它比我所描述的要短得多;因此,而不是把它留在评论,那就是:

git diff可以识别工作二个BLOB秒,用于识别BLOB简写为<commit>:<path>。所以

git diff master:UsrActivity.java branch:ProfileActivity.java 

(根据路径和提交标识的需要进行调整)。


原始响应

你可以给两次提交,但随后只有一条路径。你可以给两条路径,但是你不能指定提交。如果有一种方法可以为每个指定两个提交和一个不同的路径,我不知道它...因此,我认为要做你想要的一些额外的工作。

一种方法是通过获取每个文件的对象ID(SHA)。对于已签出的文件,你可以说

git hash-object UsrActivity.java 

要获得具有不签出一个对象,你可以不喜欢

git log -n1 -raw --no-abbrev <commit-or-branch-containing-file> -- ProfileActivity.java 

(有可能的简单版本那个;我今天早上还没有太多的咖啡因)。或者当然你可以检查一个具有第二个文件的提交(或者从这样的提交中检查该文件)并返回到git hash-object命令。

一旦你为每个文件的哈希,你刚才说

git diff <file-1-hash> <file-2-hash> 

当然,如果你最终检查两个文件伸到worktree,那么你可以diff的他们直接

git diff UsrActivity.java ProfileActivity.java 
+0

使用'git rev-parse'可以将任意的commit-specifier-plus-path-name变成提交文件的blob hash:例如'git rev-parse OldBranch:ProfileActivity.java'。然后,因为'git diff ''起作用,所以'git diff '。 – torek

相关问题