GitHub, bir dosyada yapılan değişikliklerin geçmişini yama biçiminde gösterebilir mi?


89

Bunu yaparsanız git log --patch -- path/to/file, dosyanın geçmişini ve her kaydetmede yapılan tüm değişikliklerin bir farkını alırsınız, örneğin:

$ 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'ın web arayüzünü (komut satırını değil) kullanarak aynı tür formatı elde edebilmek istiyorum ve kod olmadan başka birine gönderilecek bir bağlantı istiyorum.


Karşılaştırma Görünümü size aradığınız şeye yakın bir şey verir, ancak maalesef tek bir dosya için değildir.

2
Bunun için bir özellik talebinde bulunursanız, belki GitHub geliştirici ekibi onu ekleyebilir.

Yanıtlar:


84

Aşağıdaki URL, tek bir dosya için tüm işlemleri aşağıdakine benzer bir biçimde gösterecektir git log -p:

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

...nerede:

  • <username> deponun sahibi olan kişinin kullanıcı adıdır
  • <project> repo adı
  • <branch> 'usta' veya başka bir dal olabilir
  • <path/to/file> umarım kendi kendini açıklar

(Biraz) rastgele seçersek, işte vim-kaçak depodan bir örnek .


+1. Bu Commits API'sinden daha fazlası: development.github.com/p/commits.html (GitHub API bölümünde development.github.com )
VonC

18
Bu dosya / dosyaya git log yolu. Git log -p / dosya yolunu / yolunu istiyorum.
ma11hew28

1
Tüm bunlar bir güncelleme geçmişi değil, en son güncellemeyi göstermektir.
Gerry

4
Bunun neden oylandığını bilmiyorum. Sanırım insanlar soruyu dikkatlice okumuyorlar. Bu cevap size git log --patch -- path/to/fileOP'nin istediği gibi bir farklılık listesi vermez .
jcoffland

1
@jcoffland, oy kullanılıyor çünkü benim gibi çoğu insan bunu faydalı buluyor ve tam da aradığımız şey, operasyonun sorusunu göz ardı ederek.
mr5

49

Yukarıdaki cevaplara ve bu kesin özelliği bulmaya yönelik kendi girişimlerime dayanarak, bu sorunun doğru cevabının hayır olduğu anlaşılıyor .

Düzenleme: Olumsuz oy kullanmadan önce, belki beni yanlış kanıtlamaya çalışın. Bazen doğru cevap, duymak istediğin şey değildir.


1
Bu soruya bir cevap vermiyor. Bir yazardan eleştiri yapmak veya açıklama istemek için, gönderisinin altına bir yorum bırakın - kendi gönderilerinize her zaman yorum yapabilirsiniz ve yeterli itibara sahip olduğunuzda herhangi bir gönderi hakkında yorum yapabilirsiniz .
şüphesiz

18
Sorunun ne sorduğunu bile kabul etmeyen diğer iki cevabın aksine, bu cevap hem spesifik hem de doğrudur.
jhk

5
Bu doğru cevap. Github, yama sonuçlarını tek bir dosya için günlüklerle birlikte git log -p - dosyanın yaptığı gibi göstermenin bir yolu yoktur
nohat

4
diğer 2 cevap yanlış. bu cevap bana zaman ve hayal kırıklığı kazandırdı.
Schien

3
"Bu, soruya bir cevap vermiyor." Tabii ki öyle ve bana zaman kazandıran. Teşekkürler jhk.
ChrisJJ

34

GitHub'ın arayüzünü kullanarak doğrudan URL yanıtına (BTW tamamen doğrudur) bir alternatif şudur:

  • 'Kaynak' görünümüne tıklayın
  • İstenilen bir şubeye geçin
  • Dosya için gerçek kaynak görünümüne gelene kadar istediğiniz dosyayı arayın
  • Sağ üst köşedeki 'geçmiş'i tıklayın

13
Bu aynı zamanda orijinal posterin aradığı şeyi de vermez. Elde edeceği şeyle aynı yama çıktısı istiyor git log -p -- file. Gösterdiğiniz şey, yalnızca belirli bir dosyanın, örneğin git log -- filediff yamaları olmadan günlüktür .

-3

Eğer Linux üzerinde iseniz, Sonra yüklemek TIG şu şekilde :

sudo apt-get install tig

ve sonra,

tig yolu / / dosyaya /

Size tüm taahhütleri ve bunların ilgili değişikliklerini gösterecek

Talat Parwez

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.