2013-10-03 22 views
8

を切り替えるときについて、ランダムにファイルを変更文句を言い、その後、新しいブランチに切り替えるとgit statusにgitを実行した後に別のブランチGITが</p> <pre><code>git status # On branch master nothing to commit, working directory clean </code></pre> <p>から始まっ枝

git checkout somebranch 

への切り替えが時々ランダムに文句を言うだろう変更されたファイル。私はgit diffでファイルをdiffの場合、それは次にgit diff --ignore-space-at-eol .を実行すると、すべてのファイルがどこかに問題を終了する行があると信じて私をリードする変更は表示されません全ての行が削除された状態で最初に全体のファイルを表示し、再度

- someline 
- someotherline 
+ someline 
+ someotherline 

を追加します私が選択したマージツール(Beyond Compare)とファイルのバイナリ比較を行うと、ファイルがバイナリであることがわかります。なぜならgitはそれらが違うと不平を言いますが、私は16進数を比較しました実際にはどこが同じで、なぜgitはそれらが変わったと見なしますか? .gitattributesファイルを追加した後

# .gitattributes 
# Auto detect text files and perform LF normalization 
* text=auto 

# Custom for Visual Studio 
*.cs  diff=csharp 
*.sln merge=union 
*.csproj merge=union 
*.vbproj merge=union 
*.fsproj merge=union 
*.dbproj merge=union 

# Standard to msysgit 
*.doc diff=astextplain 
*.DOC diff=astextplain 
*.docx diff=astextplain 
*.DOCX diff=astextplain 
*.dot diff=astextplain 
*.DOT diff=astextplain 
*.pdf diff=astextplain 
*.PDF diff=astextplain 
*.rtf diff=astextplain 
*.RTF diff=astextplain 

リポジトリはgithubのガイドラインhttps://help.github.com/articles/importing-from-subversionに従うことによって変換され、その後、我々はこのようになります解決策に当社.gitattributesファイルを追加して古いSVNリポジトリにありました我々はまた、チームの全員がWindows上で実行されているhttps://help.github.com/articles/dealing-with-line-endings

から固定行末にgithubsガイドを踏襲、チームの全員が真= core.autocrlf使用していると誰もが少なくとも

を使用しています
git --version 
git version 1.8.3.msysgit.0 

ここで何が間違っていますか? gitが不平を言うファイルは完全にランダムであり、チーム全体の誰にとっても起こります。また、実際に変更されていないgit checkoutファイルを使用してファイルを元に戻すことは不可能です。

答えて

0

まず、古いスキーム(core.autocrlf)と新しいスキーム(.gitattributes)を混用しないでください。ローカルで次の操作を行うことができ、問題のファイルを修正するには

git rm --cached -r . 
git reset --hard 
+1

'.gitattributes'は開発者が' core.autocrlf'で設定したものを上書きする必要があります。なぜなら、最初に.gitattributesを使用している理由です。私はあなたが提案した修正を、github iへのリンクをたどって行っていますが、まだ問題は見ています。 –

4

私は私のデポ内のVisual Studioによって生成されるデフォルトの.gitattributesファイルを追加した後に同じ問題を抱えていました。

# * text=auto 

のみ、このファイルをコミットし、他のすべてのスプリアスは、ローカルの変更のリストから消えますファイルを変更:あなたは.gitattributesに次の行をコメントアウトすることにより、それを修正することができます。

注:autoオプションを指定すると、gitはLF行が内部で終了するすべてのファイルを保存します。ファイルをチェックアウトすると、行末はCRLFに変換されます。そこでgit diffを実行すると、デポからのLFとチェックアウト版のCRLFの違いが分かります。私にはバグのようだ。

関連する問題