Isso é basicamente duas versões dependentes do contexto da resposta de Jaap, , cada uma com um bônus.
Conjuntos completos ou quase completos
Você tem alguns arquivos em um diretório, A, que deseja comparar com alguns outros arquivos. Se o conjunto de arquivos com os quais você deseja compará-los em B for quase idêntico em conteúdo, basta definir git config --global diff.colorMoved true
e usar a sugestão do Jaap:
git diff --no-index A/ B/
A "cor movida" usará uma cor de linha diferente quando as linhas removidas de um lugar aparecerem em outro lugar no diff ... se elas foram movidas com o arquivo ou movidas para outro arquivo como em um refatorador.
Arquivos específicos para comparar
Se houver apenas alguns arquivos em B e muitos arquivos em A,
┌ A
| ├ (various folders)
| └ src
| ├ (various files)
| ├ foo.c
| └ bar.c
└ B
├ new-foo.c
└ new-bar.c
... você pode tentar deixar a detecção de renomeação do Git fazer o trabalho. Eu não sei qual versão do Git adiciona o grau de controle de renomeação que é necessário para fazer isso (estou usando v2.18). Além disso, o teste que fiz foi em um conjunto bastante trivial de arquivos.
Você realmente não quer ver que a maioria dos arquivos estão "faltando" em B. Além disso, você não quer se incomodar em dar aos arquivos de B o mesmo nome / caminho que eles aparecem em A, então você deixa -los onde e colocar em um filtro que inclui arquivos renomeados e modificados.
git diff --no-index --diff-filter=RM A/ B/
diff --git a/A/src/foo.c b/B/new-foo.c
similarity index 65%
rename from A/src/foo.c
rename to B/new-foo.c
index dd51990..64445b1 100644
--- a/A/src/foo.c
+++ b/B/new-foo.c
@@ -1,4 +1,4 @@
octopus
cow
-dog
tiger
+flamingo
diff --git a/A/src/bar.c b/B/new-bar.c
similarity index 87%
rename from A/src/bar.c
rename to B/new-bar.c
...