2012-03-15 65 views
0

我有一個共享文件夾,這是我的Rails應用程序。我在Win7中編輯RubyMine中的代碼並在Linux VM中運行服務器。這個設置工作正常。我一直在Win中完成所有提交/分支/等,通常來自RubyMine或GitBash。爲什麼我的虛擬機的git狀態會不同?

但是,今天我在Win7的GitBash中做了git status,並且在linux vm中。結果顯着不同。

# git bash win 7 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

# linux 
~/app> git status 
# On branch master 
# Changes not staged for commit: 
# 
# modified: .dbshell 
# modified: .gitignore 
# etc... 50 more entries... 

我認爲(不正確,我想)git狀態將來自.git目錄中的文件。這似乎沒有發生,因爲兩個操作系統中的文件都是相同的。所以:

  1. git status如何決定列表中的文件?
  2. 爲什麼git status在VM中會有所不同?

回答

0

我不確定diff是如何決定列表中的文件的,但我的猜測是它首先比較兩個文件的SHA-1哈希值;如果它們相同,則文件沒有改變。如果它們不同,則會運行差異來查看差異是否顯着(即可能忽略行結束問題等)。

我的猜測是這是一個行結束的問題。在Windows上,差異認定CRLF行結束沒有問題,但在Linux中,它將文件標記爲不同。你想看的Git屬性是core.whitespace(文檔在這裏:http://progit.org/book/ch7-1.html)。檢查每個操作系統上的配置(git config -l)。你可能想要的是它有cr-at-eol選項設置。

+0

空白,啊哈!將檢查到它。謝謝。 – jcollum 2012-03-16 04:22:33

0

我在使用Ubuntu和在虛擬機中使用Windows 7時遇到類似問題。繼伊桑的建議,我已經用下面的命令在我的Ubuntu配置core.autocrlf屬性爲true解決:

git config --global core.autocrlf true 
相關問題