我有一个共享文件夹,这是我的Rails应用程序。我在Win7中编辑RubyMine中的代码,并在Linux VM中运行服务器。此设置工作正常。我总是在Win中完成所有提交/分支/等,通常来自RubyMine或GitBash。
然而,今天我在Win7中的GitBash以及linux vm中进行了git status
。结果截然不同。
# 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目录中的文件。似乎没有发生这种情况,因为两个操作系统中的文件都是相同的。所以:
git status
如何确定列表中的文件? git status
在VM中会有所不同? 答案 0 :(得分:0)
我不确定diff是如何决定列表中的文件的,但我的猜测是它首先比较两个文件的SHA-1哈希值;如果它们是相同的,则文件没有改变。如果它们不同,则运行差异以查看差异是否显着(即,它可能忽略行结束问题等)。
我的猜测是,这是一个终结问题。在Windows上,diff看到CRLF行结尾没有问题,但在Linux中,它将文件标记为不同。您要查看的Git属性是core.whitespace(文档:http://progit.org/book/ch7-1.html)。检查每个操作系统(git config -l
)上的配置。您可能想要的是设置cr-at-eol
选项。
答案 1 :(得分:0)
我有一个类似的问题,使用Ubuntu并在虚拟机中使用Windows 7。根据Ethan的建议,我通过使用以下命令在我的Ubuntu上将core.autocrlf属性配置为true来解决:
git config --global core.autocrlf true