Может ли GitHub отображать историю изменений, внесенных в один файл в форме исправления? - PullRequest
88 голосов
/ 01 июня 2010

Если вы сделаете 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 (не из командной строки) , и хочу отправить ссылку кому-то другому без кода.

Ответы [ 4 ]

83 голосов
/ 01 июня 2010

Следующий URL-адрес покажет все коммиты для одного файла в формате, подобном git log -p:

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

... где:

  • <username> - имя пользователя лица, которому принадлежит репо
  • <project> - это имя репо
  • <branch> может быть 'master' или любой другой ветвью
  • <path/to/file> надеюсь, самоочевидно

Выбор (несколько) случайный, вот пример из бесполезного репо .

48 голосов
/ 03 ноября 2015

Основываясь на ответах выше и моих собственных попытках найти эту точную особенность, кажется, правильный ответ на этот вопрос: нет .

Редактировать: перед тем, как отклонить голосование, возможно, попробуйтеи докажи, что я не прав.Иногда правильный ответ - это не то, что вы хотите услышать.

34 голосов
/ 05 июня 2010

Альтернативой прямому URL-ответу (что, кстати, совершенно верно) с использованием интерфейса GitHub является:

  • Нажмите на представление «Источник»
  • Переключиться на нужную ветку
  • Ищите нужный файл, пока не дойдете до фактического исходного вида файла
  • Нажмите «История» в правом верхнем углу
0 голосов
/ 20 февраля 2016

Если вы работаете в Linux, тогда установите TIG как:

sudo apt-get install tig

, а затем,

Путь Tig / к / файлу /

Он покажет вам все коммиты и соответствующие изменения

Талат Парвез

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...