33

既存の git リポジトリで行末を特定する方法はありますか?

既存のリポジトリを複製する場合、どの core.autocrlf が作成者によって使用されたかを確認するにはどうすればよいですか?

Windows ボックスなどでの core.autocrlf の最適な設定はまだわかりません (複数の意見があるため: コードまたはhttps://help.github.com/articles/dealing-with-line-を使用して git 構成を配布する)。語尾)

おまけの質問:すべてのコミットでレポに行末が混在している場合 (core.autocrlf 設定が間違っている場合)、Windows (標準ツールを使用) で判断できますか?

4

4 に答える 4

30

(設定に関係なく) リポジトリで実際にコミットされた行末を確認するにはcore.autocrlf、次のことを試してください。

git grep -I --files-with-matches --perl-regexp '\r' HEAD

(-Iバイナリファイルを見てはいけないことを意味します。)

于 2012-08-06T09:21:50.563 に答える
5

既存の git リポジトリで行末を特定する方法はありますか?

git status内容は同じでもファイルが変更されたものとして表示される」で述べましたgit ls-files --eolが、これは良いアプローチです。(Git 2.8+)

Git がインデックスとワーキング ツリーの行末と有効な text/eol 属性を表示できるようにします。

行末 ("eolinfo") は次のように表示されます。

"-text"        binary (or with bare CR) file
"none"         text file without any EOL
"lf"           text file with LF
"crlf"         text file with CRLF
"mixed"        text file with mixed line endings.

例:

i/none   w/none   attr/text=auto      t/t5100/empty
i/-text  w/-text  attr/-text          t/test-binary-2.png
i/lf     w/lf     attr/text eol=lf    t/t5100/rfc2047-info-0007
i/lf     w/crlf   attr/text eol=crlf  doit.bat
i/mixed  w/mixed  attr/               locale/XX.po

そうは言っても:

あなたが言及した「コードを使用して git 構成を配布する」で説明したように、その設定 ( core.autocrlf) を引き続き維持し、よりきめ細かい制御のためにgitattributes ディレクティブを使用します。falseeol

そうは言っても、行末が混在していることを検出するには、次のようにします。

  • core.autocrlfに設定true
  • git cloneあなたのレポ
  • git diff: クローンの直後に差分が表示される場合... 作業ツリーで自動 eol 変換が行われたところです。

Update 2016 (4 年後): eol の変更を検出するためのよりモダンな方法:

 git -c color.diff.whitespace="red reverse" diff -R -- afile
于 2012-08-06T08:28:59.013 に答える
3

最適な行末の練習はこちら: https://stackoverflow.com/a/10855862

既存の git リポジトリの行末を確認するには:

  1. に設定core.autocrlfするとfalse、ファイルの送信中にファイルの末尾が変更されません。
  2. git clone元のレポ。新しいディレクトリに。
  3. ファイルを開くには、行末を表示するテキスト エディターを使用します (例: PHPStorm が行います)。行末はファイルごとに異なる場合があるため、複数のファイルを開く必要があります。

リポジトリに .gitattributes ファイルがあることを除いて、それはローカル構成であるため、作成者が使用した core.autocrlf を特定することはできません。

Windows で .gitattributes を使用していない場合は、デフォルトで設定されているように core.autocrlf true を使用してください。

于 2016-12-22T10:11:34.650 に答える