2012-03-15 12 views
0

私は私のRailsアプリケーションである共有フォルダを持っています。 Win7でRubyMineのコードを編集し、Linux VMでサーバーを実行します。この設定は正常に動作します。私はいつもRubyMineやGitBashから、Winのすべてのコミット/分岐/ etcを行ってきました。なぜ私のVMでgit statusが違うのですか?

しかし、今日、私はgit statusをWin7のGitBashと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ディレクトリのファイルから来ると仮定しました(間違っていますが)。両方のOSでファイルが同じになるので、それは起こっていないようです。だから、:

  1. はどのようgit statusは、そのリストにあるかのファイルを決めるのでしょうか?
  2. VMでgit statusが異なるのはなぜですか?

答えて

0

どのファイルがリストに含まれているかはわかりませんが、最初に2つのファイルのSHA-1ハッシュを比較すると思います。同じであれば、ファイルは変更されていません。それらが異なる場合は、差分を実行してその差異が有意であるかどうかを確認します(行末の問題などは無視されます)。

私の推測では、これは行末の問題です。 Windowsでは、diffはCRLF行の終わりで問題は見られませんが、Linuxではファイルが異なるとフラグを付けます。あなたが見たいGitのプロパティはcore.whitespaceです(ここにはドキュメント:http://progit.org/book/ch7-1.html)。各OSでどのように設定されているか確認してください(git config -l)。おそらく、それがcr-at-eolオプションセットを持つことです。

+0

空白、ほらああ!それにチェックインします。ありがとう。 – jcollum

0

私は、Ubuntuを使用し、仮想マシンでWindows 7を使用して同様の問題を抱えています。イーサンの提案に続いて、私は次のコマンドで私のUbuntuでtrueにcore.autocrlfプロパティを設定することによって解決している:

git config --global core.autocrlf true 
関連する問題