GitHub for Windowはreflogを記録しない

タイトルにある通り.

GitHub for Windowsとは

GitHubが公開しているWindows向けのgitクライアントGUIでゆるゆるdiffを確認してからcommitが出来て,大変便利.

Reflog(参照ログ)とは

gitは,ブランチに操作を加えたそのときどきの値をReflogと呼ばれる形で記録している.git logコマンドで見れるコミットログはgit resetによって取り消されることがありうるが,Reflogにはgit resetが行われたという履歴も含め,ブランチに加えられた操作履歴がすべて残っている.そのため,例えばgit reset --hard HEAD^などのコマンドを誤って使用してしまっても,git reflogコマンドによって取り消されたcommit時の状態を参照し,その状態まで戻すことができる.

GitHub for Windowはreflogを記録しない

上記のように便利なReflogだが,GitHub for Windowsを通じて行ったcommitは,通常のコミットログには記録されるが,git reflogで見ることのできるログには追加されない.うっかりCUIからgit resetを行なってしまうと大変なことになる(実際なった)ので,気をつけたほうが良い.

ちなみに,Mac用のクライアントであるGitHub for Macでは,ちゃんとreflogにもcommitの記録が残る.GitHub for Windowsが内部で使っているlibgit2sharpというライブラリがReflogを更新する機能を持たないことに起因する制限なようだ.