Respostas:
git diff --name-only SHA1 SHA2
em que você só precisa incluir o SHA suficiente para identificar as confirmações. Você também pode fazer, por exemplo
git diff --name-only HEAD~10 HEAD~5
para ver as diferenças entre a décima última confirmação e a quinta mais recente (mais ou menos).
git show --name-only SHA1
.
git diff --name-status [TAG|SHA1]
mostra quais operações foram feitas nos arquivos também
git diff --name-status
parece não querer mostrar arquivos adicionados. @sschuberth apontou git show
, que parece funcionar corretamente para mim: git show --pretty=format: --name-status
. Apenas fazendo git show --name-status
dá um pouco mais informação, mas ainda agradável e densa ... que vai ser meu novo comando Goto;)
git diff --name-status [SHA1 [SHA2]]
é como --name-only, exceto que você obtém um prefixo simples informando o que aconteceu com o arquivo (modificado, excluído, adicionado ...)
git log --name-status --oneline [SHA1..SHA2]
é semelhante, mas as confirmações são listadas após a mensagem de confirmação, para que você possa ver quando um arquivo foi alterado.
se você estiver interessado no que aconteceu com determinados arquivos / pastas, pode anexar -- <filename> [<filename>...]
à git log
versão.
se você quiser ver o que aconteceu com uma única confirmação, chame-a de SHA1 e faça
git log --name-status --oneline [SHA1^..SHA1]
Sinalizadores de status do arquivo:
M modificado - O arquivo foi modificado
C copy-edit - O arquivo foi copiado e modificado
R rename-edit - O arquivo foi renomeado e modificado
A adicionado - O arquivo foi adicionado
D excluído - O arquivo foi excluído
U O arquivo tem conflitos após uma mesclagem
--relative[=<path>]
opção pode ajudá-lo, não tenho certeza. Caso contrário, há sempre | erep -v '(.tmp|.foo|.dontwant)$'
... #
Parece que ninguém mencionou a opção --stat
:
$ git diff --stat HEAD~5 HEAD
.../java/org/apache/calcite/rex/RexSimplify.java | 50 +++++++++++++++++-----
.../apache/calcite/sql/fun/SqlTrimFunction.java | 2 +-
.../apache/calcite/sql2rel/SqlToRelConverter.java | 16 +++++++
.../org/apache/calcite/util/SaffronProperties.java | 19 ++++----
.../org/apache/calcite/test/RexProgramTest.java | 24 +++++++++++
.../apache/calcite/test/SqlToRelConverterTest.java | 8 ++++
.../apache/calcite/test/SqlToRelConverterTest.xml | 15 +++++++
pom.xml | 2 +-
.../apache/calcite/adapter/spark/SparkRules.java | 7 +--
9 files changed, 117 insertions(+), 26 deletions(-)
Há também --numstat
$ git diff --numstat HEAD~5 HEAD
40 10 core/src/main/java/org/apache/calcite/rex/RexSimplify.java
1 1 core/src/main/java/org/apache/calcite/sql/fun/SqlTrimFunction.java
16 0 core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java
8 11 core/src/main/java/org/apache/calcite/util/SaffronProperties.java
24 0 core/src/test/java/org/apache/calcite/test/RexProgramTest.java
8 0 core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
15 0 core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
1 1 pom.xml
4 3 spark/src/main/java/org/apache/calcite/adapter/spark/SparkRules.java
e --shortstat
$ git diff --shortstat HEAD~5 HEAD
9 files changed, 117 insertions(+), 26 deletions(-)
Mas, para ver os arquivos alterados entre o seu ramo e seu ancestral comum com outro ramo (por exemplo, origem / mestre):
git diff --name-only `git merge-base origin/master HEAD`
git diffstatus master
ou algo semelhante, que desencadeia o acima.
git show --pretty=format: --name-only origin/master..
.
git diff --name-only master..branch
não corresponde à lista PR do github. Desta forma, mais preciso. Mas de qualquer maneira eu tenho 173 arquivos cantados vs 171 no github PR. (sem merge-base
eu ter 228 vs 171)
Para complementar a resposta de @ artfulrobot, se você quiser mostrar os arquivos alterados entre dois ramos:
git diff --name-status mybranch..myotherbranch
Tenha cuidado na precedência. Se você colocar o ramo mais novo primeiro, ele mostrará os arquivos como excluídos em vez de adicionados.
Adicionar um grep
pode refinar ainda mais as coisas:
git diff --name-status mybranch..myotherbranch | grep "A\t"
Isso mostrará apenas os arquivos adicionados myotherbranch
.
--diff-filter
que fornece essa funcionalidade nativamente, o que significa menos chances de resultados incorretos (por exemplo, falsos positivos).
Adicione o alias abaixo ao seu e ~/.bash_profile
, em seguida, execute source ~/.bash_profile
; agora a qualquer momento, você precisa ver os arquivos atualizados no último commit, run, a showfiles
partir do seu repositório git.
alias showfiles='git show --pretty="format:" --name-only'
git config --global alias.showfiles 'show --pretty="format:" --name-only'
para fazer git showfiles
.
Isso mostrará as alterações nos arquivos:
git diff --word-diff SHA1 SHA2
Use git log --pretty = oneline> C: \ filename.log
que registrará apenas um on-line (--pretty = on-line) que é o nome do arquivo alterado. Também registrará todos os detalhes no seu arquivo de saída.
git log --pretty=oneline
dá-me apenas o SHA e a mensagem de confirmação usando o git 2.10.1
Como artfulrobot disse em sua resposta:
git diff --name-status [SHA1 [SHA2]]
Meu exemplo:
git diff --name-status 78a09k12067c24d8f117886c4723ccf111af4997
4b95d595812211553070046bf2ebd807c0862cca
M views/layouts/default.ctp
M webroot/css/theme.css
A webroot/img/theme/logo.png
Apenas para alguém que precisa se concentrar apenas em arquivos Java, esta é a minha solução:
git diff --name-status SHA1 SHA2 | grep '\.java$'
O seguinte funciona bem para mim:
$ git show --name-only --format=tformat: SHA1..SHA2
Também pode ser usado com um único commit:
git show --name-only --format=tformat: SHA1
o que é útil para uso no Jenkins, onde você recebe uma lista de SHAs de changeSet e deseja iterar sobre eles para ver quais arquivos foram alterados.
Isso é semelhante a algumas das respostas acima, mas usar tformat:
ao invés de format:
remover o espaço separador entre confirmações.
Com base em git diff --name-status
eu escrevi a extensão git-diffview git que processa uma visualização em árvore hierárquica do que mudou entre dois caminhos.