26

私のリポジトリでは、行末が混在しています。Mac OS X と git 1.8.3.1 を使用しています

このリポジトリを再正規化して、すべてのファイルの行末が .gitattributes ファイルと一致するようにしたいと考えています。

この目的のために、最新の変更をチェックアウトしました。

git checkout origin/develop
git reset --hard
git rm -rf .
git rm --cached -rf .
rm .git/index
git checkout HEAD .gitattributes
git reset --hard
git status

今、git rm --cached -rf .エラーが発生しますが、私は上記のコマンドで非常に妄想的です. (私のマシンでは、これらのコマンドは終了コードを無視して 1 行でした)

コマンドを何度も繰り返します。(つまり、UP; ENTER; UP; ENTER; UP; ENTER;...)

ほとんどの場合、私はクリーンなチェックアウトをしていますが、これは私が期待しているものではありません.

ただし、おおよそ 10 回に 1 回、3 つのファイル (正しく再正規化されているようです) が得られることがわかりました。残りの時間は再正規化されません。

正規化された (つまり、「変更された」) ファイルの出力は次のとおりです。

$ file source/RemoveDuplications.cs
source/RemoveDuplications.cs: UTF-8 Unicode (with BOM) C++ program text, with CRLF line terminators

私の git 属性ファイルにはかなりの数のエントリがありますが、関連するエントリは次のとおりです。

* text=auto
*.cs text eol=crlf

ここで何がうまくいかないのでしょうか?

4

2 に答える 2

1

あなたがしていることは過度に複雑なようです。リポジトリからすべてのファイルを削除したり、手動でインデックスを削除したりする必要はありません。やってみました:

git rm --cached -r .  # remove everything from the index
git reset --hard      # replace files w/ corrected line endings
git add .             # stage all changes
git commit -m "Normalize line endings"

core.autocrlfこれがうまくいかない場合は、との値を再確認します.gitattributes。それらをクリアし、シェルをリセットし、リポジトリを再度チェックアウトしてから、必要な動作を得るためにそれらをリセットする必要がある場合があります。

役立つその他のリソースを次に示します。

于 2013-11-16T08:01:25.197 に答える