2017-10-10 43 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

相關問題