Чи може 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> може бути "master" або будь-якою іншою галуззю
  • <path/to/file> сподіваємось, це само собою пояснюється

Вибираючи у (дещо) випадковому, ось приклад з репозиторію vim-fugitive .


+1. Далі з цих фіксацій API: develop.github.com/p/commits.html (в розділі API GitHub develop.github.com )
VonC

17
Це шлях до журналу git / до / файлу. Я хочу git log -p path / to / file.
ma11hew28

1
Все, що робить, - це показувати останнє оновлення, а не історію оновлення.
Gerry

4
Не знаю, чому за це голосують. Думаю, люди не уважно читають питання. Ця відповідь не дає вам переліку відмінностей, як git log --patch -- path/to/fileсаме те, про що просив ОП.
jcoffland

1
@jcoffland його висловлюють за, оскільки більшість людей, як я, вважають це корисним, і це саме те, що ми шукаємо, не зважаючи на питання оператора.
mr5

49

Виходячи з наведених вище відповідей та моїх власних спроб знайти саме цю особливість, виявляється, що правильна відповідь на це запитання - ні .

Редагувати: перед тим, як проголосувати проти, можливо, спробуйте довести, що я не правий. Іноді правильна відповідь - це не те, що ви хочете почути.


1
Це не дає відповіді на запитання. Щоб критикувати або вимагати роз’яснень від автора, залиште коментар під його публікацією - ви завжди можете коментувати власні публікації, і коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію .
безперечно

18
Ця відповідь є як конкретною, так і точною, на відміну від двох інших відповідей, які навіть не визнають, про що ставилося питання.
jhk

5
Це правильна відповідь. Github не має можливості показати результати виправлення разом із журналами для одного файлу так, як це робить git log -p - файл
nohat

4
інші 2 відповіді є неправильними. ця відповідь заощадила мені час і розчарування.
Schien

3
"Це не дає відповіді на запитання". Звичайно, і той, який заощадив мені час. Дякую jhk.
ChrisJJ

34

Альтернативою прямій відповіді за URL-адресою (яка до речі абсолютно правильна) за допомогою інтерфейсу GitHub є:

  • Клацніть на подання "Джерело"
  • Перейдіть на потрібну гілку
  • Шукайте потрібний файл, поки не перейдете до фактичного подання файлу джерела
  • Натисніть "історія" у верхньому правому куті

12
Це також насправді не дає того, що шукає оригінальний плакат. Він хоче вивести патч, такий самий, як і той, який він отримав би git log -p -- file. Те, що ви показали, це лише журнал для певного файлу, наприклад git log -- file, без виправлення різниць.

-3

Якщо ви використовуєте Linux, то встановіть TIG як:

sudo apt-get встановити tig

і потім,

tig шлях / до / файлу /

Він покаже вам усі коміти та відповідні зміни

Талат Парвез

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.