GitHubは1つのファイルに加えられた変更の履歴をパッチ形式で表示できますか?


88

実行するとgit log --patch -- path/to/file、次のように、コミットごとにファイルに加えられたすべての変更の差分とともに、ファイルの履歴が表示されます。

$ git log --patch -- git-rebase.sh

commit 20351bb06bf4d32ef3d1a6849d01636f6593339f
Author: Ramkumar Ramachandra <artagnon@gmail.com>
Date:   Sat Jun 15 18:43:26 2013 +0530

    rebase: use 'git stash store' to simplify logic

    rebase has no reason to know about the implementation of the stash.  In
    the case when applying the autostash results in conflicts, replace the
    relevant code in finish_rebase () to simply call 'git stash store'.

    Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --git a/git-rebase.sh b/git-rebase.sh
index d0c11a9..17be392 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -153,11 +153,8 @@ finish_rebase () {
                then
                        echo "$(gettext 'Applied autostash.')"
                else
-                       ref_stash=refs/stash &&
-                       >>"$GIT_DIR/logs/$ref_stash" &&
-                       git update-ref -m "autostash" $ref_stash $stash_sha1 ||
-                       die "$(eval_gettext 'Cannot store $stash_sha1')"
-
+                       git stash store -m "autostash" -q $stash_sha1 ||
+                       die "$(eval_gettext "Cannot store \$stash_sha1")"
                        gettext 'Applying autostash resulted in conflicts.
 Your changes are safe in the stash.
 You can run "git stash pop" or "git stash drop" it at any time.

commit 2e6e276decde2a9f04fc29bce734a49d3ba8f484
Author: Ramkumar Ramachandra <artagnon@gmail.com>
Date:   Fri Jun 14 18:47:52 2013 +0530

    rebase: use peel_committish() where appropriate

    The revisions specified on the command-line as <onto> and <upstream>
    arguments could be of the form :/quuxery; so, use peel_committish() to
    resolve them.  The failing tests in t/rebase and t/rebase-interactive
    now pass.

    Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>

diff --git a/git-rebase.sh b/git-rebase.sh
index d0c11a9..6987b9b 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -434,7 +434,7 @@ then
                shift
                ;;
        esac
-       upstream=`git rev-parse --verify "${upstream_name}^0"` ||
+       upstream=$(peel_committish "${upstream_name}") ||
        die "$(eval_gettext "invalid upstream \$upstream_name")"
        upstream_arg="$upstream_name"
 else
@@ -470,7 +470,7 @@ case "$onto_name" in
        fi
        ;;
 *)
-       onto=$(git rev-parse --verify "${onto_name}^0") ||
+       onto=$(peel_committish "$onto_name") ||
        die "$(eval_gettext "Does not point to a valid commit: \$onto_name")"
        ;;
 esac

(コマンドラインではなく)GitHubのWebインターフェイスを使用して同じ種類の形式取得できるようにしたいと思います。また、コードなしで他のユーザーに送信するリンクが必要です。


比較ビューは、探しているものに近いものを提供しますが、残念ながらそれは個々のファイルのためではありません。

2
機能のリクエストを行った場合、GitHub開発チームが追加する可能性があります。

回答:


83

次のURLは、1つのファイルのすべてのコミットを次のような形式で表示しますgit log -p

http://github.com/<username>/<project>/commits/<branch>/<path/to/file>

...どこ:

  • <username> リポジトリを所有する人のユーザー名です
  • <project> リポジトリ名です
  • <branch> 「マスター」またはその他のブランチにすることができます
  • <path/to/file> うまくいけば自明です

(やや)ランダムに選ぶ、これはvim-fugitiveリポジトリからの例です。


+1。これらのCommits APIの詳細:developer.github.com/p/commits.html(GitHub APIセクションのdeveloper.github.com内
VonC

17
それはgit log path / to / fileです。git log -p path / to / fileが必要です。
ma11hew28

1
更新の履歴ではなく、最新の更新を表示するだけです。
ゲリー

4
なぜこれが投票されるのか分かりません。私は人々が質問を注意深く読んでいないと思います。この答えはgit log --patch -- path/to/file、OPが要求したような差分のリストを提供しません。
jcoffland

1
@jcoffland私のようなほとんどの人がこれが役立つと思っているので賛成されていますが、これは私たちが探しているものですが、opの質問は無視されます。
mr5

49

上記の回答と、この正確な機能を見つけるための私自身の試みに基づくと、この質問に対する正しい答えは「いいえ」のようです。

編集:反対票を投じる前に、私が間違っていることを証明してみてください。時々、正しい答えはあなたが聞きたいものではありません。


1
これは質問に対する答えを提供しません。批評したり、著者に説明を要求したりするには、投稿の下にコメントを残します。自分の投稿にはいつでもコメントできます。十分な評判得られれ、どの投稿にもコメントできます。
indubitablee 2015年

18
この答えは、質問が何を求めているかを認めることさえできない他の2つの応答とは異なり、具体的かつ正確です。
jhk

5
これが正解です。Githubのは仕方が-pログGIT単一のファイルのログと一緒にパッチの結果を表示する方法がありません-ファイルがありません
nohat

4
他の2つの答えは正しくありません。この答えは私に時間とフラストレーションを節約しました。
Schien

3
「これは質問に対する答えを提供しません。」もちろん、時間を節約してくれました。ありがとうjhk。
ChrisJJ 2017年

34

GitHubのインターフェースを使用した直接URL回答(BTWは完全に正しい)の代替は、次のとおりです。

  • 「ソース」ビューをクリックします
  • 目的のブランチに切り替えます
  • ファイルの実際のソースビューが表示されるまで、目的のファイルを探します。
  • 右上の「履歴」をクリックします

12
これはまた、実際に元のポスターが探しているものを提供しません。彼はで得られるのと同じパッチ出力を望んでいgit log -p -- fileます。表示されているのはgit log -- file、diffパッチなしの、などの特定のファイルのログだけです。

-3

Linuxを使用している場合は、TIGを次のようにインストールします。

sudo apt-get install tig

その後、

tig path / to / file /

すべてのコミットとそれぞれの変更が表示されます

タラット・パルウェス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.