2017-11-01 14 views
0

これは私にとって数回起こったので、私はおそらくそれを引き起こすために何ができるのだろうと思っていました。Gitはrepoのすべてのファイルを突然変更したものとしてリストアップします

私のチームにはTFS git repoがあります。私はブランチに取り組んでいます、例えばmy-branchと言います。私はいくつかのRスクリプトを修正しており、頻繁にコミットしています。 git status

Your branch is up-to-date with 'origin/my-branch'. 
Changes not staged for commit: 
    modified: path/to/script.R 

のようなものがしかし、時々、私はこの1つのだけのスクリプトで働いている場合でも、git statusが突然私はしたにも関わらず、修正されたレポ内のすべてのファイルが表示された場合、これを、それぞれ示します一つのことに取り組んでき:

Your branch is up-to-date with 'origin/my-branch'. 
Changes not staged for commit: 

    modified: other/path/to/scripts.cpp 
    modified: path/to/script.R 
    modified: path/to/somethingElse.txt 
    modified: path/toward/otherStuff.csv 
    modified: path/toward/Wiki 
    modified: really/every/file 

私はこれらの上git diffを実行する場合、何か違いがあるように表示されません。私は以前のコミットに戻すことができますが、私は今まで行った作業を失います。これを引き起こすために何かできることはありますか?それは本当に変なことです。

+0

キャリッジリターンラインフィードの扱いとなる場合があります。それはCAESであれば、 Gitの設定core.autocrlf入力を設定すると、問題 –

+0

を修正するあなたがそのことで何を意味するか説明できますか?キャリッジリターン...私は何とかファイルに余分な行を追加していますか? –

+0

以下のフォーマットと空白のセクションをお読みください https://git-scm.com/book/gr/v2/Customizing-Git-Git-Configuration –

答えて

1

gitがファイルを変更されたものとして表示すると、それらが異なることを意味します。印刷可能な文字を使用して差分をレンダリングすることはできません(そのため、git diffの出力には何も表示されません)。バイトごとに比較すると、違いが見えます。

他の人も示唆しているように、最も可能性の高い疑問は、Enter -keyをエンコードするMicrosoft独自の方法です。 Windowsは、Enter,0x0dおよび0x0a(CRとLFとも呼ばれます)を押すたびに2バイトを書き込みます。 "git crlf problems"のgoogle検索は、あなたには長い道のりがあります。

あなたは違いがあり、まさに自分のために検証したい場合は、ここにあなたがそれを行う方法は次のとおりです。

  1. 2つのファイル、一つの修飾を持つように、修正されたファイルのコピーを作成し、オリジナルを元に戻します1つではありません。
  2. ウィンドウが表示されていない場合は、単純に比較してください:diff <(hexdump -C file1.txt) <(hexdump -C file2.txt)diff <(xxd file1.txt) <(xxd file2.txt)0a0d
  3. の場合は、サードパーティのツールが必要です。 HxDはそれほど悪くはありませんが、Webページはひどいです。

は、WindowsおよびWindowsのみでの作業にしている場合は、あなたが行うことができます

git config --global core.autocrlf false

私も代替案をよく読んへのアドバイスです。デフォルトではhttps://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#__code_core_autocrlf_code

+0

この引数は、最後に改行を追加してファイルを修正したものと見なして、見えません。私は文字通りそれらに触れていない。これらは良いツールですが、実際の違いが具体的にどのようなものかを詳しく調べていきます。 –

+0

はい、あります。そのような場合には、指定されたコマンドでいつでもチェックすることができます。ファイルを変更していないにもかかわらず、開いているファイルを変換するプログラムもあります。あなたのコンピュータ上でどのプロセスが変更されたのかはわかりませんが、プロセスはあります。 – gogstad

+0

私はそれらを開いたり、私が気づいている方法でそれらとやり取りしていません。 Hm ... –

0

を参照してください。あなたはそれを抑制するために--ignore-space-at-eol--ignore-space-changeまたは--ignore-all-spaceを使用する以外、Gitのdiffは、変更を終了ラインが表示されます。

git diffで変更された内容を表示できないもう1つの理由は、ファイルのアクセス許可が変更されたためです。詳細については、「git status -v」を使用してください。

関連する問題