7

.gitattributesたとえば、ここで詳しく説明するように、ファイルを介して行末を正しい方法で設定することにしました。そのため、core.autocrlfをfalseに設定し、.gitattributesファイルを作成してコミットしました。

*.java text eol=native
*.jsp text eol=native
*.css text eol=native
*.html text eol=native
*.js text eol=native
*.xml text eol=native
*.sql text eol=native
*.MF text eol=native

# git files
*.gitignore text eol=native
*.gitattributes text eol=native

#eclipse files
*.classpath text eol=native
*.project text eol=native
*.prefs text eol=native
*.properties text eol=native

次に、ここで提案されているように、発行git rm --cached -r .してからgit reset --hard(これも試してみました) 。これで、すべてのファイルにLF行の終わりがあります。CRLFであってはいけませんか?何が恋しいですか?私はWindows7を使用しています。git checkout HEADgit version 1.8.0.msysgit.0

ありがとう

4

2 に答える 2

7

バグに違いない。それが実際に修正または報告されていないのは奇妙です-この混乱全体はウィンドウに関するものであり、ウィンドウでは正確に機能しませんか?さらに、それについての言及はどこにもありません(?)

編集:mingw「最新のリポジトリカタログ」からインストール-g ++、gcc、ObjC + MinGWDeveloperToolkitおよびMSYS-1.0.11。同じ動作。CRLFファイルをコミットしようとすると、 CRLFがLF (チェックアウト時を意味する)警告に置き換えられます。

編集2:修正されようとしているようです

編集3:これはGit1.8.4で修正されました。

于 2012-11-25T15:48:43.523 に答える
4

あなたがやろうとしていることのために、私はあなたが以下を必要とすると思います。gitattributesのマニュアルページによるeol属性は、「lf」または「crlf」のいずれかである可能性があることに注意してください。ネイティブはcore.eol構成設定用です。

core.autocrlfをfalseに設定して、正規化を明示的に制御します。これで、text属性でマークしたファイルのみが正規化されます。

特定のファイルタイプに対してeol属性を明示的にlfまたはcrlfに設定します(たとえば、シェルスクリプトがunixで動作するためにlfを必要とする場合があり、.csprojファイルがWindowsでcrlfを必要とする場合があります)。eol属性が設定されていない場合は、core.eolの値を使用する必要があります。core.eolをcrlfに設定すると、テキストファイルの末尾がcrlfになります。

これを説明するためのgitテストスクリプトを次に示します(git / t /から実行)。

#!/bin/sh
test_description='check native crlf setting'
. ./test-lib.sh

has_cr() {
        tr '\015' Q <"$1" | grep Q >/dev/null
}

test_expect_success 'test native elf' '
  printf "*.txt text\n" > .gitattributes
  printf "one\r\ntwo\r\nthree\r\n" > filedos.txt
  printf "one\ntwo\nthree\n" > fileunix.txt
  git init &&
  git config core.autocrlf false &&
  git config core.eol crlf &&
  git add . &&
  git commit -m "first" &&
  rm file*.txt &&
  git reset --hard HEAD &&
  has_cr filedos.txt && has_cr fileunix.txt
'

test_done

上記の構成と属性を使用すると、Git for Windows 1.8.0では、両方のファイルがリセット後に正規化され、crlf行の終わりが含まれます。

バグが存在する可能性があるのは、core.eol変数が未設定のまま(または「native」に設定)の場合、ファイルがこの場合lf行末に正規化されるため、このテストが失敗することです。あなたが上で述べた道は、この状況にも役立ちません。したがって、私のテストから、計画したアプローチを成功させるには、core.eolをcrlfに明示的に設定する必要があります。

于 2012-11-25T23:18:59.370 に答える