1. ホーム
  2. git

[解決済み] githubの2つのブランチ間で1つのファイルのdiffを生成する方法

2022-06-26 21:56:30

質問

1 つのファイルについて、2 つのバージョン間の差分を表示する diff を生成する必要があります(実際には github のタグです)。それから、この差分を電子メールで誰かに送りたいので、差分のための github URL があれば理想的です。github の比較ビューでは、変更されたすべてのファイルに対してこれを行うことができますが、私のレポには何千ものファイルがあるため、それは良いことではありません。

次のようにコマンドラインでこれを行うことができますが、電子メールで誰かに差分を送信する必要があるため、これは役に立ちません。

git diff tag1 tag2 -- path/to/file

ここで議論されているコマンドライン版を見つけました。 ローカルブランチとリモートブランチの指定ファイルの差分を見るにはどうしたらいいですか?

どのように解決するのですか?

GitHub では、2 つのコミット間の diff を表示する方法しか公開されていません。

これらのタグが実際にコミットを指しているのであれば、URL の形式は次のようになります。

https://github.com/{user}/{repository}/compare/{from-tag}...{until-tag}

例として https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5 は、LibGit2Sharpプロジェクトの2つのバージョン間の差分を示しています。このdiffには、変更されたすべてのファイルが含まれています。

特定のファイルを対象としたURLを取得したい場合。

  • に切り替えて 変更されたファイル タブ

  • をクリックします。 差分の統計情報を表示する ボタンをクリックします (これにより、変更されたファイルの一覧がリンクとして表示されます)。

  • 目的のファイルのリンクをクリップボードにコピーして、Tada! これで完了です。

たとえば、上記の diff がある場合、リンクは https://github.com/libgit2/libgit2sharp/compare/v0.9.0...v0.9.5#diff-11 LazyFixtures.cs は、バージョン v0.9.0 と v0.9.5 の間で発生した変更点を指します。

更新内容

diff が大きすぎて Web インターフェイスで表示できないというコメントを受けて、古き良きコマンド ライン ツールに戻すのはどうでしょうか。diff の出力をファイルにリダイレクトして、そのファイルを電子メールの添付ファイルとして送信することができます。

$ git diff v0.9.0 v0.9.5 -- LibGit2Sharp.Tests/LazyFixture.cs > /tmp/lazyfixture.diff