757

行末の処理方法の設定を変更できるファイルまたはメニューはありますか?

私は3つのオプションがあることを読みました:

  1. Windowsスタイルをチェックアウトし、Unixスタイルをコミットします

    Gitは、テキストファイルをチェックアウトするときにLFをCRLFに変換します。テキストファイルをコミットするとき、CRLFはLFに変換されます。クロスプラットフォームプロジェクトの場合、これはWindowsで推奨される設定です(「core.autocrlf」は「true」に設定されています)

  2. そのままチェックアウトし、Unixスタイルをコミットします

    テキストファイルをチェックアウトするとき、Gitは変換を実行しません。テキストファイルをコミットするとき、CRLFはLFに変換されます。クロスプラットフォームプロジェクトの場合、これはUnixで推奨される設定です(「core.autocrlf」は「input」に設定されています)。

  3. 現状のままチェックアウト、現状のままコミット

    Gitは、テキストファイルをチェックアウトまたはコミットするときに変換を実行しません。このオプションを選択することは、クロスプラットフォームプロジェクトには推奨されません(「core.autocrlf」は「false」に設定されます)

4

7 に答える 7

673

これを制御する通常の方法はgit config

例えば

git config --global core.autocrlf true

詳細については、このリンクを下にスクロールして、 「core.autocrlf」という名前のセクションに移動します。


これがどのファイルに保存されているかを知りたい場合は、次のコマンドを実行できます。

git config --global --edit

gitグローバル設定ファイルがテキストエディタで開き、そのファイルがどこからロードされたかを確認できます。

于 2012-05-02T18:12:26.190 に答える
238

OSで使用される行末形式:

  • Windows :(CRキャリッジリターン\r)とLF(LineFeed \n)のペア
  • OSX、Linux:LF(LineFeed \n

2つの方法で、各OSの行末形式を自動修正するようにgitを構成できます。

  1. Gitグローバル構成
  2. .gitattributesファイルを使用する

グローバル構成

Linux/OSXの場合

git config --global core.autocrlf input

これにより、コミット時に修正CRLFされます。LF

Windowsの場合

git config --global core.autocrlf true

これにより、ウィンドウでチェックアウトするときに、すべてLFがに変換されるようになりCRLFます。

.gitattributesファイル

.gitattributesチームの全員が独自の構成を設定することを期待したくないので、ファイルを保持することをお勧めします。このファイルは、リポジトリのルートとに配置する必要があります。存在する場合、gitはそれを尊重します。

* text=auto

これにより、すべてのファイルがテキストファイルとして扱われ、チェックアウト時に終了するOSの行に変換されLF、コミット時に自動的に戻されます。行末を明示的に指定する場合は、次を使用できます。

* text eol=crlf
* text eol=lf

1つ目はチェックアウト用で、2つ目はコミット用です。

*.jpg binary

.jpgこれにより、パスに関係なく、すべての画像がバイナリファイルとして扱われます。したがって、変換は必要ありません。

または、パス修飾子を追加できます。

my_path/**/*.jpg binary
于 2016-11-26T18:56:13.097 に答える
38

すべての開発者に再配布できるリポジトリ設定ソリューションについては、 .gitattributesファイルのtext属性を確認してください。このように、開発者はリポジトリに独自の行末を手動で設定する必要はありません。また、リポジトリが異なれば行末のスタイルも異なる可能性があるため、少なくとも私の意見では、グローバルcore.autocrlfは最適ではありません。

たとえば、特定のパスでこの属性の設定を解除します[ --text]は、チェックインおよびチェックアウト時にgitが行末に触れないように強制します。私の意見では、ほとんどの最新のテキストエディタは両方のタイプの行末を処理できるため、これが最良の動作です。また、開発者がチェックイン時に行末変換を実行したい場合でも、特定のファイルに一致するようにパスを設定するか、リポジトリのeol属性(.gitattributes内)を設定できます。

また、.gitattributesファイルとテキスト属性について詳しく説明しているこの関連記事も確認してください。Gitでの最良のCRLF(キャリッジリターン、ラインフィード)処理戦略は何ですか?

于 2015-07-08T08:03:54.553 に答える
8

私にとって、トリックはコマンドを実行することでした

git config auto.crlf false

プロジェクトのフォルダー内で、1つのプロジェクト専用にしたかったのです。

このコマンドは、行を追加することにより、パス{project_name}/。git/ config(fyi .gitは隠しフォルダー)のファイルを変更しました

[auto]
    crlf = false

ファイルの最後に。ファイルを変更しても同じトリックが行われると思います。

于 2019-10-23T09:11:23.447 に答える
4

.gitattributesファイル

最も簡単な方法は、リポジトリでローカル.gitattributesファイルを使用することです。

特定のファイル拡張子の行末を変更することもできます

*           text=auto     # auto
*.txt       text
*.vcproj    text eol=crlf # windows line-endings
*.sh        text eol=lf   # linux line-endings
*.jpg       -text

これはグローバルデフォルトも上書きするため、移植性が大幅に向上し、さまざまなマシンでリポジトリの信頼性が向上します。

于 2021-06-30T01:05:16.677 に答える
2

PC形式からUNIX形式に変更されたファイル形式を元に戻したい場合。

(1)tortoise GITを再インストールする必要があり、「Line Ending Conversion」セクションで、「Check out asis-Checkinasis」オプションが選択されていることを確認します。

(2)残りの構成はそのままにしておきます。

(3)インストールが完了すると

(4)UNIX形式に変換されたすべてのファイル拡張子をテキストファイル(extensions.txt)に書き込みます。

ex:*.dsp
   *.dsw

(5)ファイルをクローンにコピーしますGITBASHで次のコマンドを実行します

while read -r a;
do
find . -type f -name "$a" -exec dos2unix {} \;
done<extension.txt
于 2016-03-02T11:00:12.240 に答える
0

以下の手順は私のために働きます

ルートプロジェクトフォルダーにgit属性を追加します(これは次のファイルに役立ちます)

* text=auto

*.tf  eol=lf
*.tfvars  eol=lf
*.yml  eol=lf

以下のコマンドを実行した後、既存のファイルをサポートします

find ./ -type f \( -iname \*.tf -o -iname \*.tfvars -o -iname \*.md -o -iname \*.yml \) -print0 | xargs -0 dos2unix

dos2unix .gitignore
dos2unix .gitattributes
于 2021-07-08T09:13:33.980 に答える