首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GitHub可以以补丁的形式显示对一个文件所做更改的历史记录吗?

GitHub可以以补丁的形式显示对一个文件所做更改的历史记录吗?
EN

Stack Overflow用户
提问于 2010-06-02 03:06:42
回答 4查看 52K关注 0票数 89

如果您执行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界面(而不是命令行)获得相同类型的格式,并且我希望没有代码的情况下将链接发送给其他人。

EN

回答 4

Stack Overflow用户

发布于 2010-06-02 03:14:33

以下URL将以类似于git log -p的格式显示单个文件的所有提交

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

...where:

  • <username>是拥有repo
  • <project>的用户的用户名,存储库name
  • <branch>可以是‘branch
  • <path/to/file>’,或者任何其他主机最好是self-explanatory

随机选择,这里有一个来自vim-fugitive repo的例子。

票数 85
EN

Stack Overflow用户

发布于 2015-11-03 05:01:41

基于上面的答案和我自己试图找到这个确切的功能,这个问题的正确答案似乎是no

编辑:在你投反对票之前,也许可以试着证明我是错的。有时候,正确的答案并不是你想听到的。

票数 50
EN

Stack Overflow用户

发布于 2010-06-05 04:30:12

使用GitHub的接口直接回答URL ( BTW是完全正确的)的另一种方法是:

  • 单击“源”查看
  • 切换到所需的分支
  • 查找所需的文件,直到转到文件的实际源代码视图为止
  • 单击右上角的“历史记录”
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2952507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档