BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Git2.17は移動したコードに対する差分表示やオブジェクト検索機能が向上した

Git2.17は移動したコードに対する差分表示やオブジェクト検索機能が向上した

原文(投稿日:2018/04/13)へのリンク

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

 

Gitの最新版、 バージョン2.17では、様々な改良と、細かな新機能が追加された。 新機能には、移動したコードの色付けや、履歴からのオブジェクト検索などが含まれている。

Git2.17ではdiffの表示が改善され、移動した行のグループが色づけされるようになった。 これまでのGitでは、移動した行は他のコード変更と全く同じように表示されていた。 これからは、--color-movedオプションを使うことで、移動しただけで変更のない行を、移動したうえで変更した行とは違う色にして確認できる。 移動した行に対する色の指定には、diff.colorMovedを使用する。 --color-movedオプションは以下のモードをサポートする。

  • no: 移動した行を強調しない。
  • zebra: Gitは20文字以上の英数字のブロックを検出し、交互に色づけする。 2色の色の違いは、新しいブロックが検出されたことを示す。 2つのブロックの色づけの指定は、color.diff.{old,new}Movedまたはcolor.diff.{old,new}MovedAlternativeで行うことができる。
  • dimmed_zebra: zebraと同様の表示だが、移動したコードのうち重要でない部分は淡色で表示される。
  • plain: ある場所で削除されているが、別の場所で追加されている行にはcolor.diff.newMovedで指定した色をつけ、別の場所に追加されているが、検出箇所では削除されている行にはcolor.diff.oldMovedで指定した色をつける。

logおよびdiffコマンドで新たに加わった--find-objectオプションは、検索対象を、与えられたオブジェクトハッシュを参照するコミットに限定する機能を持つ。 Gitオブジェクトは、複数のコミットにあらわれる。最初に作られた時のコミットや、別のコミットで削除された時などである。 さらに、名前が変更されたりコピーされたりした場合は、複数のパスに対応することもある。 したがって、追跡するのは簡単ではない。 これからは、たとえば、以下のコマンドにより、特定のオブジェクトを参照する全てのコミットを抽出して表示することができる。

git log --find-object=<hash-here> -p

git rebaseおよびgit amのどちらも、新たに--show-current-patchオプションをサポートするようになった。 このオプションは、コマンドによって適用された差分を表示する。 これは、コンフリクトによってリベースやマージが停止した時に有用である。 加えて、mergeコマンドは、“デフォルトではファストフォワードしない”というポリシーを少しだけ変更した。 これからは、タグをマージする時に、タグオブジェクトが/refs/tags階層の通常の場所に置かれない場合は、ファストフォワードする。 これによって、ダウンストリームのコントリビュータが彼らのトピックブランチ(アップストリームからタグ付きリリースされている)を更新する時に、不必要なマージコミットが抑制される。

Git2.17には本記事にて紹介したよりもはるかに多くの変更がある。 公式のリリースノートを確認して欲しい。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT