1

Git では、標準のマージ アルゴリズムを使用して、2 つのブランチのファイルの最終的な状態を比較できます。つまり、両方のブランチでその時点までにどのような変更があったかを覚えておくか、推測する必要があります。

.gitconfig で merge conflictstyle=diff3 を設定すると、共通の祖先が表示されるので役立ちます。ただし、頭の中で差分を作成する必要があります。つまり、さまざまなセクションをスキャンして、祖先とブランチ A の間、および祖先とブランチ B の間で何が変更されたかを把握し、最後に両方を祖先に適用するか、一方を適用する必要があります。ブランチの他の変更。

私のためにこれを行うツールはありますか?あるブランチで発生した変更を他のブランチで発生した変更と比較できるようにしたいと考えています。理想的には、このツールは、マージしようとしている変更のコミット メッセージも表示するので、意図を推測する必要はありません。

4

1 に答える 1

2

git cherry探しているものを見つけるのにgit patch-id役立ちます。

fork-point とheadの間の各コミットの変更セット (または「差分」) は、 fork-point と upperの間の各コミットと比較され ます。コミットは、プログラムから取得したpatch idgit patch-idと比較されます。

アップストリームブランチに存在しないすべてのコミットには、その ID (sha1) が報告され、シンボルのプレフィックスが付けられます。上流ブランチにすでに同等の変更があるものにはマイナス ( ) 記号が付けられ、ヘッドブランチ-にのみ存在するものにはプラス ( ) 記号が付けられます。+

           __*__*__*__*__> <上流>
          /
分岐点
          \__+__+__-__+__+__-__+__> <頭>
于 2014-01-03T18:17:46.103 に答える