分散ソース管理システム Git 2.22 をリリース

から提出された 分散ソース管理システムのリリース Git 2.22.0。 Git は最も人気があり、信頼性が高く、高性能のバージョン管理システムの XNUMX つであり、分岐とマージに基づいた柔軟な非線形開発ツールを提供します。 履歴の整合性と遡及的変更への耐性を確保するために、各コミット内の以前の履歴全体の暗黙的なハッシュが使用され、開発者のデジタル署名で個々のタグとコミットを認証することも可能です。

以前のリリースと比較して、新しいバージョンには 745 件の変更が含まれており、74 人の開発者の参加によって準備され、そのうち 18 人が初めて開発に参加しました。 メイン イノベーション:

  • リリース 1.18 以降で利用可能になり、新しいコミット リベース モード「git rebase --rebase-merges」が、現在は非推奨になっている古い「--preserve-merges」オプションを置き換えます。 「git rebase」操作は、一連のコミットを新しいベース コミットに置き換えるために使用されます。たとえば、何らかの新機能を開発している別のブランチを、ブランチの後に追加された修正を含むマスター ブランチの現在の状態に移動するために使用されます。 :

    o - o - o (私の特徴)

    /

    o - o - o - o - o (マスター)

    o - o - o (私の特徴)

    /

    o - o - o - o - o (マスター)

    移行されたブランチでブランチ構造を保持するには、以前は「--preserve-merges」オプションを使用できました。これにより、対話モード (git rebase -i --preserve-merges) で実行すると、コミット履歴を編集できるようになりましたが、リポジトリ構造の完全な保存は保証されません。 新しい「--rebase-merges」モードを使用すると、移行中のブランチ内の変更の構造を保持しながら、コミットの削除、再グループ化、名前変更などのあらゆる対話型操作を行うことができます。

    たとえば、「--rebase-merges」 許可する 移行されたブランチのブランチ構造を維持しながら、別のブランチから新しいマスター ブランチにコミットを再アップロードし、その場でコミット ノートにいくつかの変更を加えます。

  • 「git Branch new A...B」および「git checkout -b new」という構造を使用して、他の XNUMX つのブランチのマージ ベース (マージ ベース、共通の祖先へのバインド) を決定した結果に基づいて新しいブランチを作成するためのサポートを追加しました。 「A...B」。「A ...B」には、「git checkout A..​​.B」が HEAD をベース コミットにシフトし、「diff A. ..B" は、コミット "B" とコミット "A" との間の変更を示します。

    たとえば、別の my-feature ブランチで作業する場合、別のブランチ (たとえば、my-feature ブランチがチェックアウトされた master ブランチ内の同じ場所) から開始したい場合に、この機能を使用できます。 以前は、変更ログを手動で調べる必要があり、大量の変更履歴がある場合には不便でした。その後、「git merge-base master my-feature」を実行して、master ブランチと my-feature ブランチの間のマージ ベースのハッシュを計算する必要がありました。そして、共通の祖先「git Branch my-other-feature hash」に関連する新しいブランチを作成します。 Git 2.22 では、「git Branch my-other-feature A...B」という構文を使用して、他の XNUMX つのブランチのマージ ベースに相対するブランチを作成できます。

  • チェックアウト操作中に取得したブランチの名前を表示する「git Branch --show-current」オプションを追加しました。
  • 「git checkout —no-overlay — dir」オプションを追加しました。これにより、チェックアウト操作を実行するときに、dir ディレクトリの内容を master ブランチの状態に完全に対応する形式にすることができます。 たとえば、master ブランチにない dir ディレクトリのローカル コピーにファイルがある場合、デフォルトでは「git checkout master - dir」を実行するとそのファイルが残ります。 ” オプションが指定されている場合は削除されます。
  • 「git diff」コマンドは、オプションの解析にユニバーサル API を使用するため、オプションの処理を他の git ユーティリティと統合することができます。 たとえば、「git diff」では、すべてのオプションにアンタゴニスト (「--function-context」と「--no-function-context」) が追加されました。
  • 「git log」出力(「トレーラー」 - Signed-off-by や Co-authored-by などの追加情報フラグ)のコミットに添付された拡張タグをフィルターする機能が追加されました。 キーと値の両方でラベルをフィルタリングすることができます。次に例を示します。
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • 新しいトレース エンジン Trace2 が追加され、より柔軟で構造化された出力形式が提供されます。 Trace2 を使用すると、実行された操作とパフォーマンス データに関するテレメトリを収集して、より詳細な分析とデバッグを行うことができます (ハンドラーはユーザーによって割り当てられ、データは外部に送信されません)。
  • 「git bisect」レポートがより読みやすくなり、問題のあるコミットがより明確に強調表示され、各ファイルの変更に関する概要統計が (変更された行数のレベルで) 表示されます。
  • ディレクトリの名前変更を決定するためのヒューリスティックが再作成され、名前変更ラベルの誤ったインストールが排除されました。 疑わしい場合、そのようなディレクトリは競合しているとしてマークされるようになりました。
  • タグを別のタグにインストールしようとすると、警告が表示されます。これは通常、誤って行われ、間違ったコミットにタグを設定する可能性があります (たとえば、「git tag -f -m "updated message" のような構造)」 my-tag1 my-tag2'' では古いタグにタグが作成されますが、開発者は古いタグが指すコミットに新しいタグがインストールされることを期待していました)。
  • ビットマップ リポジトリ (ディスク ベースの「到達可能性ビットマップ」構造) の生成が有効になっています。これにより、各コミットで使用可能なオブジェクトのセットに関するデータが保存され、ベース オブジェクトの存在を迅速に判断できるようになります。 この構造により、データ取得操作 (git fetch) の実行時間が大幅に短縮されます。

出所: オープンネット.ru

コメントを追加します