Jeśli to zrobisz git log --patch -- path/to/file
, otrzymasz historię pliku wraz z różnicą wszystkich zmian wprowadzonych w nim z każdym zatwierdzeniem, na przykład:
$ 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
Chcę mieć możliwość uzyskania tego samego rodzaju formatu za pomocą interfejsu internetowego GitHub (nie wiersza poleceń) i chcę, aby link został wysłany do kogoś innego bez kodu.
git
version-control
github
ma11hew28
źródło
źródło
Odpowiedzi:
Poniższy adres URL pokaże wszystkie zatwierdzenia pojedynczego pliku w formacie podobnym do
git log -p
:http://github.com/<username>/<project>/commits/<branch>/<path/to/file>
...gdzie:
<username>
to nazwa użytkownika osoby, która jest właścicielem repozytorium<project>
to nazwa repozytorium<branch>
może być „mistrzem” lub inną gałęzią<path/to/file>
mam nadzieję, że nie wymaga wyjaśnieńWybierając (nieco) losowo, oto przykład z repozytorium vim-fugitive .
źródło
git log --patch -- path/to/file
które prosił OP.Na podstawie powyższych odpowiedzi i moich własnych prób znalezienia dokładnie tej funkcji wydaje się, że poprawna odpowiedź na to pytanie brzmi: nie .
Edycja: zanim oddasz głos, może spróbuj udowodnić, że się mylę. Czasami prawidłowa odpowiedź nie jest tym, co chcesz usłyszeć.
źródło
Alternatywą dla bezpośredniej odpowiedzi URL (która przy okazji jest całkowicie poprawna) przy użyciu interfejsu GitHub jest:
źródło
git log -p -- file
. To, co pokazałeś, to tylko dziennik konkretnego pliku, na przykładgit log -- file
bez łatek różnicowych.Jeśli używasz Linuksa, zainstaluj TIG jako:
i wtedy,
Pokaże ci wszystkie zatwierdzenia i ich zmiany
Talat Parwez
źródło