2016-11-22 46 views
2

Git表明文件已更改。但是,當我運行git difftool並在Beyond Compare中打開該文件時,它會將這些文件顯示爲二進制相同的文件。即使我在十六進制模式下打開Beyond Compare,它仍然會將文件顯示爲相同。Git顯示文件已更改,即使文件的字節對字節完全相同

我在Windows 10上運行git 2.9.2.windows.1。當我從PowerShell運行git和從msys git bash提示符運行git時,我發現這個問題。

以前有沒有其他人見過?注意:我不是在討論換行結尾的變化,因爲行結尾差異在文件的十六進制比較中顯然是可見的。

+0

檢查文件名中的'git的LS-files'輸出,驗證的情況下匹配系統真正的文件,你可以仔細檢查。例如,如果在'git ls-files'中看到'someFile',但在文件系統中有'somefile',則可能導致您正在觀察的行爲。 – janos

+0

Git如何指示更改?通過'git status',或通過'git diff'(而不是'git difftool')? – sschuberth

+0

當我運行'git diff'時,它顯示文件的每一行都被改變,但據我所知,沒有內容改變。我使用difftool的原因是查看文件的實際字節,但這些字節看起來也是相同的。 – quanticle

回答

2

這可能是文件模式,即Unix模式位的變化。即使在Windows上(它沒有Unix模式位),Git也會跟蹤可能改變的文件模式,例如通過運行git update-index --chmod=+x <filename>。通過運行git status -v在這種情況下會顯示類似

$ git status -v 
On branch version-defines 
Your branch is up-to-date with 'origin/version-defines'. 
Changes to be committed: 
    (use "git reset HEAD <file>..." to unstage) 

     modified: circle.yml 

diff --git a/circle.yml b/circle.yml 
old mode 100644 
new mode 100755 
+0

我運行'git status -v',但它顯示的輸出與'git status'幾乎相同。我絕對沒有看到任何文件模式更改或任何其他元數據更改。 – quanticle