2010-06-01 16 views
87

Nếu bạn làm git log --patch -- path/to/file, bạn sẽ nhận được lịch sử của tập tin cùng với một diff của tất cả các thay đổi được thực để nó với từng cam kết, như thế này:GitHub có thể hiển thị lịch sử các thay đổi được thực hiện cho một tệp dưới dạng bản vá không?

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

commit 20351bb06bf4d32ef3d1a6849d01636f6593339f 
Author: Ramkumar Ramachandra <[email protected]> 
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 <[email protected]> 
    Signed-off-by: Junio C Hamano <[email protected]> 

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 <[email protected]> 
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 <[email protected]> 
    Signed-off-by: Junio C Hamano <[email protected]> 

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 

Tôi muốn có thể để có được cùng loại định dạng sử dụng giao diện web của GitHub (không phải dòng lệnh) và tôi muốn liên kết gửi cho người khác không có mã.

+0

[So sánh chế độ xem] (https: // github.com/blog/612-giới thiệu-github-so sánh-xem) cung cấp cho bạn một cái gì đó gần với những gì bạn đang tìm kiếm, nhưng nó không phải cho một tập tin cá nhân, không may. –

+2

Nếu bạn thực hiện một yêu cầu tính năng cho nó, có thể nhóm GitHub dev sẽ thêm nó. –

Trả lời

80

URL sau đây sẽ hiển thị tất cả các cam kết cho một tập tin duy nhất trong một định dạng tương tự như git log -p:

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

... nơi:

  • <username> là tên người dùng của con người sở hữu repo
  • <project> là tên repo
  • <branch> có thể là 'bậc thầy' hoặc bất kỳ chi nhánh khác
  • <path/to/file> là hy vọng tự giải thích

Chọn tại (phần nào) ngẫu nhiên, đây là một ví dụ từ vim-fugitive repo.

+0

+1. Thêm các API cam kết đó: http://develop.github.com/p/commits.html (trong phần API GitHub http://develop.github.com/) – VonC

+17

Đó là đường dẫn đăng nhập git/to/file. Tôi muốn git log -p path/to/file. – ma11hew28

+1

Tất cả những gì thực hiện là hiển thị cập nhật mới nhất, không phải là lịch sử cập nhật. – Gerry

34

Một thay thế cho câu trả lời URL trực tiếp (mà BTW là hoàn toàn chính xác) sử dụng giao diện GitHub là để:

  • Bấm vào xem 'Nguồn'
  • Đổi thành một chi nhánh mong muốn
  • Look cho tệp bạn muốn cho đến khi bạn đến chế độ xem nguồn thực tế cho tệp
  • Nhấp vào 'lịch sử' ở góc trên cùng bên phải
+12

Điều này *** cũng *** không thực sự cung cấp cho những gì các poster ban đầu đang tìm kiếm. Anh ta muốn đầu ra bản vá, giống như những gì anh ta có với 'git log -p - file'. Những gì bạn đã hiển thị chỉ là nhật ký cho một tệp cụ thể, như 'git log - file', không có các bản vá lỗi khác. –

46

Dựa trên các câu trả lời ở trên và nỗ lực của riêng tôi để tìm tính năng chính xác này, có vẻ như câu trả lời đúng cho câu hỏi này là no.

Chỉnh sửa: trước khi bạn bỏ phiếu, có thể thử và chứng minh cho tôi sai. Đôi khi câu trả lời đúng không phải là những gì bạn muốn nghe.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). – indubitablee

+18

Câu trả lời này vừa cụ thể vừa chính xác, không giống như hai câu trả lời khác mà thậm chí không nhận ra câu hỏi đang hỏi. – jhk

+5

Đây là câu trả lời đúng. Github không có cách nào để hiển thị kết quả bản vá cùng với nhật ký cho một tệp duy nhất, cách git log -p - file hiện – nohat

-3

Nếu bạn đang ở trên Linux, Sau đó cài đặt TIG như:

sudo apt-get install tig

và sau đó,

đường TIG/to/file/

Nó sẽ s cách bạn tất cả các cam kết và các thay đổi tương ứng của chúng

Talat Parwez

Các vấn đề liên quan