リライト前後のコミットを比較する
What Changed… は、2 つのコミット シリーズ、つまり書き換え前のブランチと書き換え後のブランチのパッチを比較します。マージコミットは省略されます。ペアには、Same、Changed、Dropped、または Added のマークが付けられます。比較では、参照の移動やファイルの変更は行われません。ペアリングは、2 つのコミットが同じことを意味することを証明するものではありません。
GitTree で無料で動作: すべてのローカル Git 機能。アカウントは必要ありません。
始める前に
- 変更点は無料プランの一部です。 PATH 上の Git は
git range-diffを提供する必要があります。そうでない場合、GitTree は、この Git は書き換えられたシリーズを比較できないと言います。 - まだ両方のヒントがあります。リベース後、古いヒントは reflog にあることがよくあります。 Lost & Found はブランチが指していないコミットを見つけることができます。
どこで見つけられますか
- コミットの Compare メニュー: What Changed…。
- 力押し後の通知。
Alt+D、またはコマンド パレット。
| アクション | macOS | WindowsとLinux |
|---|---|---|
| What Changed… | ⌥D | Alt+D |
| コマンドパレット | ⌘⇧P | Ctrl+Shift+P |
ステップ
2つのヒントを選択してください
Before rewrite を古いチップに設定し、After rewrite を新しいチップに設定します。どちらかの側が空の場合は Choose both tips。 Advanced: excluded bases では、Old base と New base によって範囲が制限されます。チップの共通祖先を使用するには、ベースを空のままにしておきます。
比較
Compareを押します。 Stop は読み取りに現在のステップを終了するよう要求します。結果は Rewrite comparison です。各ペアは、Same、Changed、Dropped、または Added です。 Inspect patch difference は 1 つのペアを開きます。 No patches differ in these ranges はシリーズ一致を意味します。
公開する前に確認してください
注には、公開する前に変更されたパッチを確認するよう記載されています。 Changed ペアは、異なる差分を持つ同じパッチ スロットです。 Dropped は古いシリーズのみにありました。 Added は新しいシリーズのみに含まれます。このダイアログでは何もプッシュされません。準備ができたら、通常のプッシュを使用するか、リモートに古いチップがまだある場合は リース付き強制プッシュ を使用します。
期待される結果
書き換え後に残ったパッチ、編集されたパッチ、表示されたパッチ、または消えたパッチに名前を付けることができます。ブランチ、インデックス、作業ツリーはそのままです。他の人に新しい履歴の使用を依頼する前に、変更されたペアのパッチを確認してください。
Git コマンド
GitTree は 2 つの範囲で git range-diff を実行します。ターミナルでも同じ比較を実行できます。 oldtip...newtip はマージベースを使用します。 4 つのリビジョンを渡すと、両方のベースが自分で設定されます。これは、高度なフィールドが行うことです。
git range-diff oldtip...newtip
git range-diff oldbase..oldtip newbase..newtip
git reflog show featuregit reflog show feature にはリベース前のブランチのヒントがリストされているため、古いヒントを Before rewrite に貼り付けることができます。 Range-diff はパッチを比較します。 2 つのコミット メッセージが同じ作業を説明しているとは判断しません。 リベース と インタラクティブ リベース により、リライトが行われます。リベースに関する チュートリアル レッスンでは、コマンドライン形式が示されています。
各ペアの状態が意味するもの
| 州 | 意味 |
|---|---|
| 同じ | パッチは両方のシリーズに一致します |
| 変更されました | ペアは一致していますが、パッチは異なります |
| 落とした | パッチは旧シリーズのみ |
| 追加されました | パッチは新シリーズのみにあります |
マージのコミットは省略されるため、期待していたマージはドロップされたペアではありません。 Partial comparison: output reached its limit は範囲が広すぎることを意味します。裾野を狭くします。 Git output format was not recognized は、Git が出力したテキストを解析できなかったことを意味します。リストを信頼する前に、そのテキストを調べてください。
比較が実行できない場合
Git に range-diff がない場合、GitTree は This Git cannot compare rewritten series. Update Git, or use Compare in the command palette to inspect the two revisions. と表示します。この通常の比較は 2 つのツリーの差分であり、パッチ シリーズではありません。設定画面またはGitセットアップからGitを更新し、再度変更内容を開きます。
何か問題が発生した場合
「この Git では、書き直されたシリーズを比較することはできません。」
インストールされた Git には範囲差がありません。 Git を更新して、再試行してください。それまでは、コマンド パレットから 2 つのリビジョンを比較してください。このビューはツリーの差分であり、一連のパッチではありません。
「両方のヒントを選択してください。」
書き換え前または書き換え後は空です。 reflog または Lost & Found から古いチップを選択し、ブランチから新しいチップを選択します。
「部分比較:出力が限界に達しました。範囲を狭めてください。」
それぞれの辺が書き換えられた部分のみになるように古いベースと新しいベースを設定し、もう一度比較を押します。
「これらの範囲では、どのパッチも違いはありません。」
シリーズが一致するか、ベースによって関心のあるコミットが除外されます。共通の祖先を使用するにはベースをクリアし、同じチップを 2 回選択していないことを確認します。
質問
何が変更されたのか、私のブランチも変わりますか?
いいえ。2 つのコミット シリーズを読み取り、ペアの状態を示します。参照とファイルはそのまま残ります。
変更されたペアは同じコミット ID ですか?
いいえ。リベースは新しいコミット ID を書き込みます。変更されたとは、パッチがペアになっており、それらの差分が同一ではないことを意味します。 2 つのメッセージが同じ意図を説明しているという声明ではありません。
マージコミットが見つからないのはなぜですか?
ダイアログには、マージコミットが省略されると表示されます。 Range-diff は、マージ ノードではなく、書き換えの両側のパッチを比較します。
リベース後の古いチップはどこにあるのでしょうか?
通常、エントリの有効期限が切れるまで、reflog 内にあります。 Lost & Found は、それを指すブランチがない場合、その reflog と GitTree のリカバリ参照を検索できます。
これは git diff に代わるものですか?
いいえ、git diff は 2 つのツリーを比較します。 git range-diff は 2 つの一連のパッチを比較します。書き換え後に変更内容を使用します。ツリーの違いが必要な場合は、通常の比較を使用します。
