Dapatkah GitHub menampilkan riwayat perubahan yang dilakukan pada satu file dalam bentuk tambalan?

89

Jika Anda melakukannya git log --patch -- path/to/file, Anda akan mendapatkan riwayat file bersama dengan diff dari semua perubahan yang dibuat dengan setiap komit, seperti ini:

$ 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

Saya ingin bisa mendapatkan format yang sama menggunakan antarmuka web GitHub (bukan baris perintah) , dan saya ingin tautan dikirim ke orang lain tanpa kode.

ma11hew28
sumber
Bandingkan Tampilan memberi Anda sesuatu yang mendekati apa yang Anda cari, tetapi sayangnya ini bukan untuk file individual.
2
Jika Anda membuat permintaan fitur untuk itu, mungkin tim pengembang GitHub akan menambahkannya.

Jawaban:

84

URL berikut akan menampilkan semua komit untuk satu file dalam format yang mirip dengan git log -p:

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

...dimana:

  • <username> adalah nama pengguna dari orang yang memiliki repo
  • <project> adalah nama repo
  • <branch> bisa menjadi 'master' atau cabang lainnya
  • <path/to/file> mudah-mudahan sudah cukup jelas

Memilih (agak) acak, berikut adalah contoh dari repo vim-fugitive .

Tim Henigan
sumber
+1. Lebih banyak lagi dari Commits API itu: develop.github.com/p/commits.html (di bagian API GitHub develop.github.com )
VonC
17
Itu git log path / ke / file. Saya ingin git log -p path / to / file.
ma11hew28
1
Yang dilakukannya hanyalah menampilkan pembaruan terkini, bukan riwayat pembaruan.
Gerry
4
Saya tidak tahu mengapa ini mendapatkan suara. Saya kira orang tidak membaca pertanyaan itu dengan cermat. Jawaban ini tidak memberi Anda daftar perbedaan seperti git log --patch -- path/to/fileyang diminta OP.
jcoffland
1
@jcoffland itu di-upvoted karena kebanyakan orang seperti saya menganggap ini membantu dan inilah yang kami cari, meskipun mengabaikan pertanyaan op.
mr5
49

Berdasarkan jawaban di atas dan upaya saya sendiri untuk menemukan fitur yang tepat ini, tampaknya jawaban yang benar untuk pertanyaan ini adalah tidak .

Sunting: sebelum Anda turun suara, mungkin coba dan buktikan saya salah. Terkadang jawaban yang benar bukanlah yang ingin Anda dengar.

jhk
sumber
1
Ini tidak memberikan jawaban atas pertanyaan tersebut. Untuk mengkritik atau meminta klarifikasi dari seorang penulis, tinggalkan komentar di bawah kiriman mereka - Anda selalu dapat mengomentari kiriman Anda sendiri, dan setelah Anda memiliki reputasi yang memadai, Anda akan dapat mengomentari kiriman apa pun .
indubitablee
18
Jawaban ini spesifik dan akurat, tidak seperti dua jawaban lainnya yang bahkan gagal untuk menjawab pertanyaan yang diajukan.
jhk
5
Ini jawaban yang benar. Github tidak memiliki cara untuk menampilkan hasil tambalan bersama dengan log untuk satu file seperti yang dilakukan git log -p - file
nohat
4
2 jawaban lainnya salah. jawaban ini menghemat waktu dan frustrasi saya.
Schien
3
"Ini tidak memberikan jawaban atas pertanyaan itu." Tentu, dan yang menghemat waktu saya. Terima kasih jhk.
ChrisJJ
34

Alternatif untuk jawaban URL langsung (yang BTW benar sekali) menggunakan antarmuka GitHub adalah:

  • Klik pada tampilan 'Sumber'
  • Beralih ke cabang yang diinginkan
  • Cari file yang Anda inginkan hingga Anda mendapatkan tampilan sumber sebenarnya untuk file tersebut
  • Klik 'riwayat' di sudut kanan atas
Xubin
sumber
12
Ini juga tidak benar-benar memberikan apa yang dicari oleh poster asli. Dia menginginkan keluaran tambalan, sama seperti yang akan dia dapatkan git log -p -- file. Apa yang Anda tunjukkan hanyalah log untuk file tertentu, seperti git log -- file, tanpa patch diff.
-3

Jika Anda menggunakan Linux, instal TIG sebagai:

sudo apt-get install tig

lalu,

tig path / ke / file /

Ini akan menunjukkan kepada Anda semua komit dan perubahannya masing-masing

Talat Parwez

Talat Parwez
sumber