Quando git diff COMMIT
vejo as alterações entre esse commit e o HEAD (tanto quanto sei), mas gostaria de ver as alterações feitas por esse único commit.
Eu não encontrei nenhuma opção óbvia em diff
/ log
que me dará essa saída.
Quando git diff COMMIT
vejo as alterações entre esse commit e o HEAD (tanto quanto sei), mas gostaria de ver as alterações feitas por esse único commit.
Eu não encontrei nenhuma opção óbvia em diff
/ log
que me dará essa saída.
Respostas:
Para ver o diff para um COMMIT
hash específico :
git diff COMMIT~ COMMIT
mostrará a diferença entre esse COMMIT
ancestral e o COMMIT
. Veja as páginas de manual do git diff para detalhes sobre o comando e gitrevisions sobre a ~
notação e seus amigos.
Como alternativa, git show COMMIT
fará algo muito semelhante. (Os dados do commit, incluindo seu diff - mas não para commits de mesclagem.) Veja a página de manual do git show .
^
necessidades de ser citado nas conchas Thomson e Bourne (sinônimo de |
lá) e rc
e seus derivados (operador acento circunflexo) e zsh
com extendedglob habilitado ( not
operador de englobamento)
HEAD^
implica o primeiro pai no caso de uma confirmação ter vários pais (ou seja, confirmação de mesclagem).
git diff COMMIT~ COMMIT
funciona para mim, observe o til em vez de acento circunflexo. Estou executando o git versão 2.6.1.windows.1 no Windows 10.
Como mencionado em " Atalho para diff do git commit com seu pai? ", Você também pode usar git diff
com:
git diff COMMIT^!
ou
git diff-tree -p COMMIT
Com o git show, você precisaria (para se concentrar apenas no diff):
git show --color --pretty=format:%b $COMMIT
O COMMIT
parâmetro é um commit-ish :
Um objeto de confirmação ou um objeto que pode ser desreferenciado recursivamente para um objeto de confirmação. A seguir estão todos os commit-ishes: um objeto de commit, um objeto de tag que aponta para um objeto de commit, um objeto de tag que aponta para um objeto de tag que aponta para um objeto de commit, etc.
Veja gitrevision "ESPECIFICANDO REVISÕES" para referenciar um commit-ish.
Veja também " O que significa tree-ish no Git? ".
Você também pode tentar desta maneira fácil:
git show <COMMIT>
git show
mostra as alterações feitas no commit mais recente.
Equivalente a git show HEAD
.
git show HEAD~1
leva você de volta 1 commit.
Primeiro obtenha o ID de confirmação usando,
git log #to list all
Ou
git log -p -1 #last one commit id
Copie o ID de confirmação.
Agora usamos dois métodos para listar alterações de uma confirmação específica,
Método 1:
git diff commit_id^! #commit id something like this 1c6a6000asad012
Método 2:
git show commit_id
For example: git show 1c6a600a
^!
significa isso?
git show <commit_sha>
Isso mostrará exatamente o que há nesse commit. Eu acho que você pode fazer um intervalo apenas colocando um espaço entre dois commit shas.
git show <beginning_sha> <ending_sha>
o que é bastante útil se você estiver revidando com frequência, pois seus logs de recursos serão todos seguidos.
Na página de manual do git-diff (1) :
git diff [options] [<commit>] [--] [<path>…]
git diff [options] --cached [<commit>] [--] [<path>…]
git diff [options] <commit> <commit> [--] [<path>…]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>
Use o terceiro no meio:
git diff [options] <parent-commit> <commit>
Também na mesma página do manual, na parte inferior, na seção Exemplos :
$ git diff HEAD^ HEAD <3>
Compare a versão antes da última confirmação e da última confirmação.
É certo que está redigido um pouco confuso, seria menos confuso quanto
Compare a confirmação mais recente com a confirmação antes.
git diff HEAD HEAD^
.
O seguinte parece fazer o trabalho; Eu o uso para mostrar o que foi trazido por uma mesclagem.
git whatchanged -m -n 1 -p <SHA-1 hash of merge commit>
git log
? (por causa de stackoverflow.com/a/18585297/6309 )
Outra possibilidade:
git log -p COMMIT -1
Você poderia usar git diff HEAD HEAD^1
para ver o diff com o commit pai.
Se você deseja apenas ver a lista de arquivos, adicione a --stat
opção
diff
comando é: o que eu precisaria alterar no arquivo para passar de commit HEAD
para commit HEAD^1
?
git difftool COMMIT^ <commit hash>
também é possível se você configurou seu difftool.
Veja aqui como configurar o difftool Ou a página de manual aqui
Além disso, você pode usar git diff-tree --no-commit-id --name-only -r <commit hash>
para ver quais arquivos foram alterados / confirmados em um hash de confirmação
Para ver o autor e a hora usando commit git show COMMIT
. O que resultará em algo assim:
commit 13414df70354678b1b9304ebe4b6d204810f867e
Merge: a2a2894 3a1ba8f
Author: You <you@you.com>
Date: Fri Jul 24 17:46:42 2015 -0700
Merge remote-tracking branch 'origin/your-feature'
Se você deseja ver quais arquivos foram alterados, execute o seguinte com os valores da linha Mesclar acima git diff --stat a2a2894 3a1ba8f
.
Se você quiser ver o diff real, execute git --stat a2a2894 3a1ba8f
git --stat a2a2894 3a1ba8f
". Eu acho que você quer dizer git diff a2a2894 3a1ba8f
ou não unknown option: --stat
.
Para verificar alterações completas:
git diff <commit_Id_1> <commit_Id_2>
Para verificar apenas os arquivos alterados / adicionados / excluídos:
git diff <commit_Id_1> <commit_Id_2> --name-only
NOTA : Para verificar o diff sem confirmar no meio, você não precisa colocar os IDs de confirmação.
Estou executando o Git versão 2.6.1.windows.1 no Windows 10, então precisei de uma pequena modificação na resposta de Nevik (til em vez de circunflexo):
git diff COMMIT~ COMMIT
Outra opção é citar o sinal de intercalação:
git diff "COMMIT^" COMMIT
Este comando fornece o commit-hash pai do Git:
git log -n 2 <commit-hash>
Depois disso git diff-tool <commit-hash> <parent-commit-hash>
Exemplo:
bonnie@bonnie ~/ $ git log -n 2 7f65b9a9d3820525766fcba285b3c678e889fe3
commit 7f65b9a9d3820525766fcba285b3c678e889fe3b
Author: souparno <souparno.majumder@gmail.com>
Date: Mon Jul 25 13:17:07 2016 +0530
CSS changed to maintain the aspect ratio of the channel logos and to fit them properly.
commit c3a61f17e14e2b80cf64b172a45f1b4826ee291f
Author: souparno <souparno.majumder@gmail.com>
Date: Mon Jul 25 11:28:09 2016 +0530
The ratio of the height to width of the channel images are maintained.
Depois disto
git difftool 7f65b9a9d3820525766fcba285b3c678e889fe3b c3a61f17e14e2b80cf64b172a45f1b4826ee291f
No caso de verificar a alteração da fonte em uma visualização gráfica,
$gitk (Mention your commit id here)
por exemplo:
$gitk HEAD~1