git ファイルはよく壊れるので細かく小さく作業しましょう

git ファイルはたまに壊れる

git ファイルが壊れると、
最悪どの git コマンドもエラーを起こし、
push も pull も reset も出来なくなる。

が、そういう時は、
壊れた git ファイルを直すよりローカルファイルを退避させて、
リモートリポジトリから clone する。

この方法で実務でも特に困ったことがないので、
とりあえず壊れたら clone するのがオススメ。

本当はエラー毎に対処方法が細かく違うけど、
上記の方法がいちいち調べなくても良いので楽。

# 退避
$ mv /path/to/your/project /path/to/your/project_temp

# 空のディレクトリ生成&移動
$ cd /path/to/your
$ mkdir project
$ cd /path/to/your/project

# クローン
# 最後尾のドットを忘れずに。
$ git clone git@github.com:username/repo.git .

# ブランチ作業中に壊れたりしたら、
# リモートリポジトリから該当ブランチを持ってくる
$ git checkout -b branchName origin/branchName

あとは退避しているファイル群から、
コミットし忘れたファイルなどを移動したりして、
作業していた状態まで戻せば終わり。

エラー色々

fatal: index file smaller than expected
error: unable to resolve reference ORIG_HEAD: ????
fatal: Cannot lock the ref 'ORIG_HEAD'.
error: Could not read xxxxxxxxxxxxxxxxxxxx
fatal: Failed to traverse parents of commit xxxxxxxxxxxxxxxxxxxx
error: bad signature
fatal: index file corrupt

git を使うにあたって

git は細かくブランチを切って、
小さく作業していくのが正しいと思う。

が、実際にはそううまくいかないので、
個人的には状況次第でスピード優先したり、妥協したりしていいと思う。

ブランチのうまい切り方は、
github の有名なオープンソースなどを参考にすればいいと思う。

例えば、
angular/angular
golang/go
sveltejs/svelte

正解はないと思うので、しっくりくるものを真似すればいいと思う。