133

2つのバージョンの違いを示す単一のファイルの差分を生成する必要があります。これは実際にはgithubのタグです。次に、この差分を電子メールで誰かに送信したいので、差分のgithubURLが理想的です。github比較ビューを使用すると、変更されたすべてのファイルに対してこれを実行できますが、リポジトリには何千ものファイルがあるため、これは適切ではありません。

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

git diff tag1 tag2 -- path/to/file

ここで説明したコマンドラインバージョンを見つけました。 ローカルブランチとリモートブランチの指定されたファイルの違いをどのように確認できますか?

4

5 に答える 5

115

GitHubは、2つのコミット間の差分を表示する方法のみを公開しています。

これらのタグが実際にコミットを指している場合、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つのバージョン間の差分を示しています。この差分には、変更されたすべてのファイルが含まれます。

特定のファイルをターゲットとするURLを取得する場合:

  • [変更されたファイル]タブに切り替えます

変更されたタブ

  • [差分統計の表示]ボタンをクリックします(これにより、変更されたファイルのリストがリンクとして表示されます)

show-diff

  • 探している特定のファイルのリンクをクリップボードにコピーします...そしてTada!完了です。

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

アップデート

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

$ git diff v0.9.0 v0.9.5 -- LibGit2Sharp.Tests/LazyFixture.cs > /tmp/lazyfixture.diff
于 2013-01-24T14:18:46.497 に答える
13

次の問題が当てはまる場合の回避策は次のとおりです。

この比較は大きいです!最新の250件のコミットのみを表示しています

比較するファイルの生のビューをhttps://gist.github.com/にコピーします。比較する2つの特定のコミットポイントを使用します。古いコミットから始めます。

https://gist.github.com/には、[改訂]をクリックしたときに並べて表示される優れた差分ビューがあります。

于 2017-02-25T16:05:23.033 に答える
3

回答は、前回のチェックインのGITHUB WEBページにあるファイルのコード変更の履歴/改訂のみを表示(ダウンロードしない)したい人向けです。

githubでそのファイルに移動し、HISTORYを選択します。これにより、以下のようなチェックインコメントリンクのリストを含むページが開きます。

ここに画像の説明を入力してください クリックすると、コードの変更が表示されます。履歴をクリックした後; パッケージをクリックすると、パッケージレベルのすべてのファイルのチェックインを確認できます。

Eclipseでは、 EGitプラグインを使用して履歴を比較し、ファイルを「右クリック->比較」することができます。 Eclipseのgitで2つのリビジョンを比較するにはどうすればよいですか?

于 2015-11-03T08:57:15.747 に答える
0

nulltokenの回答を使用して、コマンドラインからGitHubの2つのコミット間の差分を取得するための簡単な便利なスクリプトをまとめました。

完全なスクリプトは要点にありますが、ここに良い点があります。

# Parse the following patterns for repo urls to get the github repo url
# https://github.com/owner/repo-name.git
# git@github.com:owner/repo-name.git
BASE_URL="https://github.com/""$(git config --get remote.origin.url | sed 's/.*github\.com[/:]\(.*\).git/\1/')""/compare"

if [[ "$#" -eq 1 ]]; then
  if [[ "$1" =~ .*\.\..* ]]; then
    # Handle "git hubdiff fromcommit..tocommit"
    open "${BASE_URL}/$(git rev-parse "${1/\.\.*/}")...$(git rev-parse ${1/*\.\./})"
  else
    # Handle "git hubdiff fromcommit"
    open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse HEAD)"
  fi
elif [[ "$#" -eq 2 ]]; then
  # Handle "git hubdiff fromcommit tocommit"
  open "${BASE_URL}/$(git rev-parse "$1")...$(git rev-parse "$2")"
fi

引数として、ブランチ、コミット、およびで解決できるその他すべてのものを受け入れますgit rev-parse。私はopen、ウェブページを開くためにmacOSでのみ機能するを使用しました。そのため、別の環境を使用している場合は、それを微調整する必要があります。

nulltokenの回答と同様に、差分内の1つのファイルを指すには、ファイルのタイトルをクリックしてアンカー文字列をURLバーに表示し、コピーする必要があります。

于 2017-01-05T04:14:11.893 に答える
0

これはまだ不可能なので、ここにブラウザベースのdiff-toolメソッドがあります。自動化を活用していませんが、Chrome拡張機能をインストールする機能のみが必要です。

  1. Chromeブラウザ用のDiffツールをインストールします:https ://chrome.google.com/webstore/detail/diff-tools-text-pdf-doc-o/lkcdojpmjehlniamnglpjlldkoonlomb
  2. Diff Toolsを開きます(http://iblogbox.com/devtools/diff/
  3. GitHubから、コミット、タグ付け、または分岐の前に移動し、ファイルを開き、Rawボタンをクリックして生のファイルビューを取得し、すべてを選択してコピーし、DiffToolsの左側のテキストボックスに入力します
  4. 手順3を繰り返しますが、AFTERファイルについては、DiffToolsの右側のボックスに貼り付けます。
  5. クリックCompare Nowして差分をアドホックに実行します
于 2019-12-13T01:55:02.893 に答える