2012-03-15 44 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 
相关问题