2011-04-25 111 views
2

在我的'項目/回購'中,我有兩個MS Visual Studio項目,一個用於主代碼,另一個用於測試。我有一些共同的文件(在複製和粘貼意義上),我想看看/檢查他們是哪些。在git中檢查重複的文件(內容)?

什麼是正確的Git命令(或桂菜單點擊),以查看我是否在整個回購樹中使用了相同的內容blob兩次?如果我已經正確閱讀了所有教程,git應該爲同一文件內容的兩個副本提供一個SHA1,並且已經知道它。我希望Git有一個查找並顯示這些重複使用文件路徑的命令。

最終,我希望能夠找到當有一個共同的祖先blob SHA1(但不是一個共同的位置)之間的差異。 [即測試一個版本被更新領先於其他版本的...]

期間我知道這是不是有這樣的重複最佳實踐,但它的工作已經結束了:-(

我的方式有Msysgit和GitExtensions在Windows ...

回答

5

你可以做這樣的事情

git ls-tree -r HEAD 

要看到斑點和文件。

如果你不想給M全線看看哪都一樣的斑點:

git ls-tree -r HEAD | 
    sort -t ' ' -k 3 | 
     perl -ne '$1 &&/$1\t/ && print "\e[0;31m" ;/([0-9a-f]{40})\t/; print "$_\e[0m"' 

來源:Git: Find duplicate blobs (files) in this tree

+0

我會試試看。我想我看到它..我得到的副本顯示紅色在所有的排序一長串這些項目,當我將這三行粘貼到Git Bash(在Windows中的repo目錄的頂部打開) – 2011-04-25 21:33:53

+0

我有點驚訝它不能作爲一個簡短的命令或GUI操作。我期待很多人從這裏開始(如「如果我是你,我不會從這裏出發」) – 2011-04-25 21:39:04