Se o fizer git log --patch -- path/to/file
, obterá o histórico do arquivo junto com uma comparação de todas as mudanças feitas nele a cada commit, como este:
$ 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
Quero poder obter o mesmo tipo de formato usando a interface da web do GitHub (não a linha de comando) e quero um link para enviar a outra pessoa sem o código.
git
version-control
github
ma11hew28
fonte
fonte
Respostas:
O seguinte URL mostrará todos os commits para um único arquivo em um formato semelhante a
git log -p
:http://github.com/<username>/<project>/commits/<branch>/<path/to/file>
...Onde:
<username>
é o nome de usuário da pessoa que possui o repo<project>
é o nome do repo<branch>
pode ser 'master' ou qualquer outro ramo<path/to/file>
é autoexplicativo esperançosamenteEscolhendo de forma (um pouco) aleatória, aqui está um exemplo do repositório vim-fugitive .
fonte
git log --patch -- path/to/file
que o OP pediu.Com base nas respostas acima e em minhas próprias tentativas de encontrar esse recurso exato, parece que a resposta correta para essa pergunta é não .
Edit: antes de votar, talvez tente provar que estou errado. Às vezes, a resposta correta não é o que você deseja ouvir.
fonte
Uma alternativa para a resposta de URL direta (que BTW é perfeitamente correta) usando a interface do GitHub é:
fonte
git log -p -- file
. O que você mostrou é apenas o log de um arquivo específico, comogit log -- file
, sem os patches diff.Se você estiver no Linux, instale o TIG como:
e depois,
Ele irá mostrar a você todos os commits e suas respectivas mudanças
Talat Parwez
fonte