Git 2.20にはクローンやフェッチ、grepの改善など、さまざまな変更と修正が加えられている。さらに、Windows版でサポートするWindowsのバージョンがVista以降に設定された。
Git 2.20はユーザビリティ向上とパフォーマンス改善、バグフィックスに重点を置いている。例えば、大文字と小文字を区別しないファイルシステムにリポジトリをクローンする場合、大文字小文字のみが違うファイル名を持つファイルをこれまでよりうまく扱えるようになった。このような場合は、ファイルの紛失を防ぐために警告が発行される。動作の改善されたもうひとつのコマンドがgit fetch
だ。これまではタグの不変性を参照せず、既存のタグをメッセージなしに更新していたが、新バージョンでは、--force
を指定しなければエラーになる。
コミットグラフ生成に進度表示が追加された。グラフの生成にかなりの時間を要するような大規模リポジトリでは、ユーザエクスペリエンスが改善される。同じようにgit status
コマンドでも、時間を要するリポジトリインデックスの参照時にプログレスバーが表示されるようになった。
git grep
コマンドでは、--no-recursive
フラグを使った再帰的でない形式での実行が可能になった。これは--max-depth 0
と同意である。
最も多く利用されるGitコマンドのひとつである対話型リベースでは、ユーザに制御を返すbreak
オペレーションがto-doリストで指定できるようになった。特定のコミット前に停止するオペレーションは、rebase操作のコミットに手作業で変更を加えたい場合に便利である。
Git 2.20はコンフィギュレーションの柔軟性も向上している。バージョン2.19以前のGitでは、system(/etc/config
、git config --system ...
)、グローバルまたはユーザ単位(~/.gitconfig
、git config --global ...
)、リポジトリ単位(./.git/config
、git config --local ...
)という3種類のコンフィギュレーションファイルがサポートされていた が、同じリポジトリを共有するワークツリーで異なるコンフィギュレーションを持つ方法がサポートされていないため、これでは不十分だった。新バージョンでは、git config
コマンドで--worktree
フラグを使用することにより、.git/config.worktree
ファイルを読み書きできるようになった。
パフォーマンスの面では、git submodule update
とgit rebase
、git rebase -i
がC言語で書き直された他、git pull
、git am
、git rebase
など、すでにC言語に移植されているものについても、パフォーマンスの改善が図られている。
Git 2.20には他にも、編集中に空のコミットメッセージを指定するとrebaseがアボートする問題、再利用される変数が初期化されていないために発生するgit stattus
のアサーションなど、多数のバクフィックスが含まれている。
最後に、今回のリリースから、Windowsプラットフォームの最低動作条件としてWindows Vista以降が必要になった。
Git 2.20には、この記事では紹介しきれないようなものが他にもたくさんあるので、公式リリースノートを見逃さないでほしい。