web-dev-qa-db-ja.com

"text"属性を使用してファイルを正規化した後、どうやってgitにマスターブランチをチェックアウトさせ、キャリッジリターンを削除させるのですか?

さて、それで私はこのような行でファイル.gitattributesを追加しました

*.css text
*.js text
etc...

私はそれから http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in の指示に従った

$ rm .git/index     # Remove the index to force Git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"

しかし、今私の作業コピーはまだキャリッジリターンを持っています!保管したいファイルを追跡していません。正規化ファイルを使用してgitでマスターブランチを再度チェックアウトする方法を教えてください。

レポジトリのクローンを作成すると、キャリッジリターンがないすべてのファイルがあるため、リポジトリ内でファイルが正規化されていることがわかります。

85
Jason

ああああ!前のコミットをチェックアウトしてから、マスターをチェックアウトします。

git checkout HEAD^
git checkout -f master
228
Jason

他の人が指摘したように、リポジトリ内のすべてのファイルを削除してからチェックアウトすることができます。私はこの方法を好むし、それは以下のコードで行うことができます

git ls-files -z | xargs -0 rm
git checkout -- .

または1行

git ls-files -z | xargs -0 rm ; git checkout -- .

私はいつもそれを使っていて、まだ欠点を見つけていません!

さらに詳しい説明をするために、-zls-filesによって出力される各エントリーの終わりにヌル文字を追加し、-0xargsにそれらのヌル文字で受け取る出力を区切るように伝えます。

13
mechsin