GitHub에서 한 파일의 변경 내역을 패치 형식으로 표시 할 수 있나요?


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의 웹 인터페이스 (명령 줄이 아님)를 사용하여 동일한 종류의 형식을 얻고 싶고 코드없이 다른 사람에게 링크를 보낼 수 있기를 원합니다.


비교보기 는 찾고있는 것과 비슷한 것을 제공하지만 불행히도 개별 파일이 아닙니다.

2
기능 요청을하면 GitHub 개발 팀에서 추가 할 수 있습니다.

답변:


84

다음 URL은 다음과 유사한 형식으로 단일 파일에 대한 모든 커밋을 표시합니다 git log -p.

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

...어디:

  • <username> 저장소를 소유 한 사람의 사용자 이름입니다.
  • <project> 저장소 이름입니다.
  • <branch> '마스터'또는 다른 분기 일 수 있습니다.
  • <path/to/file> 자명하다

(다소) 무작위로 선택하면 vim-fugitive repo 의 예가 있습니다 .


+1. 더 많은 커밋 API : develop.github.com/p/commits.html(GitHub API 섹션 develop.github.com )
VonC

17
그것은 git log path / to / file입니다. git log -p path / to / file을 원합니다.
ma11hew28 2010-07-05

1
업데이트 내역이 아닌 최신 업데이트 만 표시됩니다.
Gerry

4
나는 이것이 왜 투표를 받고 있는지 모르겠습니다. 사람들이 질문을주의 깊게 읽지 않는 것 같아요. 이 답변은 git log --patch -- path/to/fileOP가 요청한 것과 같은 diff 목록을 제공하지 않습니다 .
jcoffland 17:37에

1
@jcoffland 저와 같은 대부분의 사람들이 이것이 도움이된다고 생각하고 이것이 우리가 찾고있는 것이기 때문에 upvoted되고 있습니다.
mr5 2015

49

위의 답변과이 정확한 기능을 찾으려는 내 자신의 시도를 바탕으로이 질문에 대한 정답은 ' 아니요' 인 것으로 보입니다 .

편집 : 당신이 투표하기 전에, 어쩌면 내가 틀렸다는 것을 증명하십시오. 때로는 정답이 듣고 싶은 것이 아닙니다.


1
이것은 질문에 대한 답을 제공하지 않습니다. 작성자에게 비평이나 설명을 요청하려면 게시물 아래에 댓글을 남겨주세요. 언제든지 자신의 게시물에 댓글을 달 수 있으며, 충분한 평판얻으면 모든 게시물댓글 수 있습니다 .
indubitablee 2015

18
이 답변은 질문이 무엇을 요청했는지조차 인식하지 못하는 다른 두 답변과 달리 구체적이고 정확합니다.
jhk

5
이것이 정답입니다. Github에서이 방법은 -p 로그인 망할 놈의 단일 파일에 대한 로그와 함께 패치 결과를 표시 할 수있는 방법이 없습니다 - 파일 않습니다
nohat

4
다른 2 개의 답변은 정확하지 않습니다. 이 답변은 저에게 시간과 좌절감을 줄였습니다.
Schien

3
"이것은 질문에 대한 답을 제공하지 않습니다." 물론입니다. 감사합니다 jhk.
ChrisJJ

34

GitHub의 인터페이스를 사용하는 직접 URL 답변 (BTW가 완벽하게 정확함)의 대안은 다음과 같습니다.

  • '소스'보기를 클릭하십시오.
  • 원하는 지점으로 전환
  • 파일의 실제 소스보기가 나올 때까지 원하는 파일을 찾으십시오.
  • 오른쪽 상단의 '기록'을 클릭하십시오.

12
이것은 또한 원래 포스터가 찾고있는 것을 실제로 제공하지 않습니다. 그는에서 얻을 수있는 것과 동일한 패치 출력을 원합니다 git log -p -- file. 당신이 보여준 것은 git log -- filediff 패치가없는 특정 파일에 대한 로그입니다 .

-3

Linux를 사용하는 경우 TIG 를 다음 과 같이 설치하십시오 .

sudo apt-get install tig

그리고,

tig 경로 / 대상 / 파일 /

모든 커밋과 각각의 변경 사항을 보여줍니다.

탈랏 파 베즈

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.