Gitを0.7倍楽しむ方法

  1. 空のローカルリポジトリを用意する。
  2. core.autocrlffalseに設定する。
  3. 改行コードがCRLFのファイルをaddしてcommitする。ここではBOMなしUTF-8かつCRLFのhello.cを登録したと仮定する。
  4. .gitattributesをaddしてcommitする。中身は*.c text eol=crlf encoding=utf-8-dosとしておく。
  5. 手動でhello.cを削除した後に、git checkout .hello.cを復活させる。
  6. git statusgit diffなどでhello.cの状態を確認する。

よくよくgitattributesのドキュメントを読み解いてみれば、予期された挙動ではある気がするが……。

教訓 (1):.gitattributesを用いてテキストファイルの改行コードを細かく指定するならば、真っ先に.gitattributesリポジトリに登録しておくこと。

教訓 (2):やらかしてしまった場合には、以下の手順で対処すること。

  1. 一時的に.gitattributesを編集して改行コードの指定を無効化する。今回の例では*.c text eol=crlf encoding=utf-8-dosの行をコメントアウトすればよい(この変更はcommitしないでおく。)
  2. 問題となっているファイル(今回の例ではhello.c)の改行コードをLFに変換してcommitする。
  3. .gitattributesの内容を元に戻す。
  4. commitしたファイル(今回の例ではhello.c)を手動で削除した後、git checkout .などで復活させる。