Git 1.9 最新情報

皆さんが、DayZ徹夜プレイで略奪しまくるのに忙しいのは承知していますが、少しお時間をください。今日ご紹介する内容はチェックするだけの価値があるものです。git ポイントリリースの最新版(1.9)がリリースされました!

リリースノートの中で私の目を引いた点を紹介します。興味のある方は、早速リリースノートに目を通し、オタク心をときめかせる華麗さを堪能することができますが、私にも手伝わせてください!

最新版の説明に入る前に、これまでのリリース1.8.21.8.31.8.41.8.5 に関してもこれまで記事を書いてきましたので、ご紹介しておきます。巧妙な技や使える情報がたくさんあります。

全ユーザー向けアップデートの指針

アップデートするにはどうすれば良いか? 以下に取りかかるのに役立つ情報を挙げておきます:

  • OSX 上でhomebrewを使用している場合は、brew update && brew upgrade gitと入力してください。
  • Ubuntu ベースのディストリビューションを使用している場合は、魔法のapt trick をご利用ください (他のディストリビューションに関しては、読者向け練習問題として残しておきます)
  • Windows 上では、新しいインストーラーを実行するだけです (Windows ポートはラグが発生し少し遅れることがありますが、すぐに見つからなくてもご辛抱ください)

注意!: パッケージマネージャーがアップデートのディストリビューションを遅らせる場合があるかもしれません。これは私の手には負えません。

ネットワーク運用アップデート: プッシュとフェッチ

「git fetch ‐‐tags」がすべてのデータ、かつ、タグをフェッチするようになりました

git fetch に続く ‐‐tags オプションの意味が変更されました。 このコマンドは、オプションなしで同コマンドがフェッチするデータに追加してタグをフェッチするようになりました。

shallow クローンから「フェッチ」できるようになりました!

shallow クローン化したリポジトリから fetch できるようになりました。これは、これまで禁止されていたアクションです。レシーバーは、Truncate された履歴をもつ shallow リポジトリになることにもご注意ください。

標準「git push origin master」がよりセマンティクスなものとなりました

git push origin master、または、あらゆる git push $where $what が、同じ参照マッピングを使用するように拡張されました。git push origin を使うと、どのoriginにある、どのrefをローカル master に更新するのかを決定できます。ここでの構成を使用した例を挙げます:


1
2
[remote "origin"]    push = refs/heads/*:refs/review/*

git push origin がローカルブランチを origin の refs/review/ 階層以下にある対応参照にプッシュするように、git push origin master はそこにrefs/review/master を更新するようになります。

ログ機能と見た目の美しさ

ディレクトリ以外のすべてをログする

パス指定 構文で論理否定を使い、git log ‐‐ . ':!dir’ によって指定 'dir' ディレクトリ以外のすべてに関心があると伝えることができます。

difftool 進展状況

git difftool は、存在するパスの種類の合計数と、その中ですでに表示されたパスの数を示し、進展状況を示唆します。

「for-earch-ref」での色とフォーマットの指定

git for-each-ref ‐‐format=… で、いくつかのフォーマット指定ができるようになりました:


1
e.g. "%(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject)"

git log で「‐‐exclude={glob}」を使えるようになりました。かなり便利です!

git log 周辺で、‐‐exclude={glob} オプションが使えるようになり、git log ‐‐exclude=’/' ‐‐branches を使って、このパターンと一致するブランチ以外のすべてのブランチの履歴をリストするように指示できます。

その他の改良点

git merge-base ‐‐fork-point で参照ログ (reflog) からフォークポイントを見つけ出す

git merge-base‐‐fork-point モードが使えるようになり、git pull ‐‐rebase が使用しているものと同じロジックを採用し、作業元である remote-tracking ブランチに対して reflog エントリから適切なフォークポイントを見つけ出します。git rebase は、‐‐fork-point オプションを使って導けるものと同じロジックを持っています。

一部の非推奨コマンドが削除されました!

長い間、非推奨だったいくつかの旧式コマンドが完全に廃止されました。以下にそのコマンド名を挙げます:


1
repo-config, tar-tree, lost-found and peek-remote

サブモジュール: さらに堅固な「git submodule foreach」

git submodule foreach $cmd $args で指定されるコマンド文字列が、評価されることなく直接シェルに渡されます。これは後方互換性のない変更で、既存ユーザーは被害を受けるかもしれません。これにより、sshの構文解析方法とは異なるようになりました。簡単に言うと、$args 引用を介する必要がなくなったということです。

結論

今日はここまでです。このアップデートが役立った場合はお知らせください。今後の情報もお見逃しなく。@durdn で私をフォローしてください。DVCS 関連情報について @AtlDevtools チームも素晴らしい情報を発信しているのでフォローしてください。


*本ブログは Atlassian Blogs の翻訳です。本文中の日時などは投稿当時のものですのでご了承ください。
*原文 : 2014 年 2 月 18 日 "What's new in Git 1.9"