2012-10-13 51 views
23

我有一個網站,有一個git回購。我克隆了repo,這樣我就可以在一個目錄中開發,然後推送到repo,然後拉入live/prod目錄(如果有更好的方法,建議您有興趣提供這樣的建議,但這不在這個問題的範圍)。差異返回整個文件的相同文件

我沒有在現場目錄下面把我的所有最新變化:

git add . 
git commit -a // added a message 
git push 

然後我的確在dev目錄下:

git clone [email protected]:user/repo.git 

我再開兩個文件,督促/root/test.php和dev/root/test.php,它們看起來完全相同。然而,當我做了以下diff命令,它輸出的整個文件:

diff prod/root/test.php dev/root/test.php 

我很困惑,爲什麼差異會輸出整個文件,如果他們相同的...我也試着用搜索引擎這一點,找不到這個問題的其他人。也許這是一個行結束問題或字符編碼問題,他們看起來相同,但他們實際上是不同的,當你推到他們的回購時,git/bitbucket會轉換它?這是我能想到的唯一的事情......無論是這個還是我錯過了一些非常明顯的東西。

下面是輸出:

1,3c1,3 
< <? 
< echo '<p>Hello world!</p>'; 
< ?> 
--- 
> <? 
> echo '<p>Hello world!</p>'; 
> ?> 

回答

27

這似乎是一個空白問題,爲了避免將來他們可以設置Git來規範它們。

Windows和UNIX系統中不使用同一行結束,以防止發生基於這些衝突,你應該設置你混帳配置是這樣的:

  • 的Windowsgit config --global core.autocrlf true
  • Unixgit config --global core.autocrlf input

接下來,爲了確保我們只提交理想的空白規則,您可以設置此配置opti上:

git config --global core.whitespace trailing-space,space-before-tab,indent-with-non-tab 
2

這種情況通常意味着行結尾是不同的。大多數diffin程序允許您忽略行尾的差異。你的是否允許你這樣做?

12

最有可能是行終止。嘗試git diff --ignore-space-at-eol。而對於普通的(而不是git)差異是diff -b