一週間ぶりくらいにMacPortsを更新したらGitの2.4が振ってきた。
Gitは既に誕生から10年を迎えたらしい。前職から使ってたから自分が使っている期間もそこそこになる。
Atomic Pushes
複数のブランチをpushするときに、一つでもpushが失敗したら他のpushも取り下げるようなことができるようになった。--atomic
オプションを使用して以下のようにpushする。
$ git push --atomic origin branch1 branch2 ...
Push-to-deploy の改善
Git 2.3 で導入されたPush-to-deployについて以下の改善が施された。
push-to-checkout
フックの追加により、pushされたブランチに対してサーバ側のワーキングツリーに変更があった場合の挙動を定義できるようになった。- コミットが一つもないブランチに対してもPush-to-deployが正常に設定できるようになった。
自分はPush-to-deployをまだ使ったことがないので、これらの改善点の嬉しさがいまいちわからない。
git log の --invert-grep オプション
git log
コマンドのオプションの --grep=<pattern>
, --author=<pattern>
, --committer=<pattern>
, --grep-reflog=<pattern>
それぞれのパターンに一致しないものを検索するためのオプション --invert-grep
が追加された。
例えば以下のようにして、自分以外のコミットを確認できる。
$ git log --invert-grep --author=Ryohei
該当するコミットのSHA-1ハッシュだけをリストする git rev-list
コマンドをネストすることで、複雑な検索が可能になる。
以下はRyohei、Keisuke、Gissan以外のコミットを検索するコマンド。--stdin
と --no-walk
オプションと共にパイプして、最後だけ git log
にする。
$ git rev-list --no-merges --invert-grep --author=Ryohei master | git rev-list --stdin --no-walk --invert-grep --author=Keisuke | git log --stdin --no-walk --invert-grep --author=Gissan
git status -vv
git status
コマンドに -v
オプションを2つ付けると、コミットされていない変更差分が一緒に出力されるようになった。git status
に続けて git diff --cached
と git diff
が出力されてる感じ。
参照
自分は一時情報としてブログ記事 Git 2.4 — atomic pushes, push to deploy, and more を参照しました。
詳細はGit 2.4 リリースノートを参照。