2017-08-09 12 views
1

問題を解決した問題を解決するために私の質問に答えるつもりです。git - windows + linuxデュアルブートでCRLF問題

downvotersのための注意:私は(それは私が私の問題を解決する方法である)根本的な原因は、様々な他のスレッドで議論されていることを理解しています。この記事では、デュアルブートシステムを使用してこの問題を解決する方法について説明します。だからいいえ、この質問/回答は重複していませんしかし、この問題では、SOのリポジトリに多くのケースを追加する一般的なクラスの問題の特定のインスタンスです。家で


:私は、Linuxのコード。 LFは行末として使用されます
オフィスで:私はWindowsでコードします。 CRLFが行末として使用されます。
デフォルトでは、gitのautocrlf機能(https://stackoverflow.com/a/20653073/2715083)は物事を幸せに保ちます。

あなたはLinuxとWindowsとのデュアルブートシステムを実行する場合は、次のように混乱を自分でアップすることができます:

  1. git pullあなたは、Windows環境でLinux環境での働いていたいくつかのファイルデュアルブートLinux環境からアクセスできる場所。これにより、ファイルの末尾がCRLFに変更されます。
  2. 次に、あなたは、Linuxでファイルを開くとき、デフォルトでは唯一LFであり、git diffは各LFが一つ一つのラインでCRLFに変更してしまったので、ファイル全体が、変更されると言うだろう。 (私はこの差分カウント作り付けを持つアトム、によって警告された)
+0

これらの問題は、すでに持っている参照してください。議論されている[ここ](https://stackoverflow.com/questions/19) 67370/git-replacement-lf-with-crlf?noredirect = 1&lq = 1)、[ここ](https://stackoverflow.com/questions/3206843/how-line-ending-conversions-work-with-git-core -autocrlf-between-different-operat)と他の多くのスレッドで動作します。 [ここ](https://stackoverflow.com/a/29888735/365237)は、ファイルを再チェックアウトしたい場合には、巧妙な方法で対処しています。 – eis

+0

[gitをCRLFで置き換える]の複製があります(https://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf) – eis

+0

@eisは私の編集を見てとても親切です:) – Somjit

答えて

1

知らせていますか?私は新しい.gitattributesファイルにそれを含める必要があるかどうかわからなかった。私がしたときにATOMはまだファイルを修正済みとして示していたからだ。

はい、あります。
Gitに.gitattributesディレクティブを適用させるには、 "Dealing with line endings"を参照してください。

まず、core.autocrlfがfalseに設定されていることを確認します。その後

git config --global core.autocrlf false 

ます。また、インデックスの再正規化を強制するために、使用することができます
git add . -u 
git commit -m "Saving files before refreshing line endings" 

rm .git/index 

git reset 

git status 

git add -u 
git add .gitattributes 

git commit -m "Normalize all the line endings" 

は:

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

は "Force LF eol in git repo and working copy"

* text=auto eol=lf 
+0

詳細な手順をお寄せいただきありがとうございます!すべての行末を強制的に 'LF'にすることで、' CRLF'が標準であるようなWindowsの問題が発生しますか? – Somjit

+1

@Somjitファイルの種類とIDEの種類によって異なります。 '* text = auto eol = lf'を' * .xxx'(特定の拡張子)に制限することができます – VonC

+0

ええ、ほとんどのコードエディタは大丈夫でしょう。カスタム拡張モジュールを指摘していただきありがとうございます。 – Somjit

-1

はFIX

  1. 削除/問題のあるファイル/フォルダ
  2. git checkout <hash> <your/files/location>
を行う別の場所に移動します

ここで、最後の正常なコミットの場合は<hash>your/files/locationの場合は、ファイルの場所はcurです。 eCRLF問題です。これにより、基本的に古いバージョンがローカルの.gitリポジトリから復元されます。

私のために働きました。あなたは私が逃した、または間違って説明した何かを知っているなら


、私はあなたがテキスト=自動車部品について話している

+0

問題を回避しています。本当にそれを修正するには、 '.gitattributes'ファイルを使用してください。 – Philippe

+0

@Philippeあなたは 'text = auto'部分について話していますか?私が新しい '.gitattributes'ファイルにインクルードする必要があるかどうかわかりませんでした。なぜなら、私がしたときに、ATOMはまだファイルを修正済みのファイルとして示していたからです... – Somjit

関連する問題