以前のリリースと比較して、新しいバージョンには 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