Git2.0がリリース!一足早く新機能を紹介するよ

Git2.0がまもなくリリースされるようです。
Git v2.0 Release Notes

リリースノートをもとに、一足早く新機能と変更点の紹介をしてみます。
(各機能についてはまだ動作確認しておりませんので、ここがおかしいなどあればご指摘ください)

引数なしのgit pushが安全になりました。

When "git push [$there]" does not say what to push, we have used the traditional "matching" semantics so far (all your branches were sent to the remote as long as there already are branches of the same name over there). In Git 2.0, the default is now the "simple" semantics
git pushで引数のブランチ名を省略したときの挙動が、デフォルトで"simple"モードになりました。

"simple"モードとは、簡単に言うと、
「カレントブランチと同名のリモートブランチが存在して、追跡関係にある場合のみpushが行われる」
という、比較的安全よりのモードです。

pushのモードについてはこちらの記事が詳しいです。
gitのpush.defaultに関するノウハウ - Qiita

ちなみに私は "current"モード派です。

git pull でfast-forwardのみを許可することが可能に

今まで、git pullをfast-forwardに制限しようと思ったら "git pull --ff-only" と打つ必要がありました。
git 2.0では、config値 "pull.ff" を設定することで、これをgit pullのデフォルトにすることができるようになりました。
私はpullするときは必ず "git pull --ff-only"していたので、この機能はうれしいです。

git add が git add -A と同じになりました。

"git add " is the same as "git add -A " now, so that "git add dir/" will notice paths you removed from the directory and record the removal. In older versions of Git, "git add " used to ignore removals. You can say "git add --ignore-removal " to add only added or modified paths in , if you really want to.
ファイルを削除したときに、git add とするだけでステージングすることができるようになりました。
確かに今までだと、rm file したやつは "git rm"とか"git add -A"しないとステージングできなかったので若干面倒でした。
これでちょこっと便利になりますね。

内部的なパフォーマンス改善

レポジトリのデータベースを格納しているpack filesのデータ構造について、あらたに"bitmap index"という方式が採用され、パフォーマンスが大幅に向上するそうです。
この仕組みはJGitから移植されてきたそうです。
詳しく知りたい方は下記パッチをご覧ください。

Merge branch 'jk/pack-bitmap'

既存のレポジトリを"bitmap index"方式に変更するにはどうすればよいのかはちょっとわかりませんでした ><
どなたか解説を・・・!

まとめ

メジャーバージョンアップのわりには変更点が少ない印象を受けました。
(あまり変更点が多すぎてもついていくのがしんどいので、個人的にはこの方がうれしいです)
後方互換性もほぼ保たれているようなので、みなさんもバージョンアップして最新版を使ってみてはいかがでしょうか。

こちらからは以上です。
カテゴリ: