git diffrealmente executa um diff em todo o código fonte. Como faço isso em um determinado diretório, para que eu possa visualizar as modificações nos arquivos abaixo dele?
Eu gostaria de usar git diff -- myfolderpara minimizar a ambiguidade do git. A notação geral para git diff (e muitos comandos git) é git diff [commit-ish] -- [path]onde commit-ish assume como padrão HEAD (onde você está agora) e [path]assume como padrão o diretório raiz do git, mas pode ser qualquer coisa relativa ao diretório atual. Sem o --, o git vai adivinhar o que você quer dizer, [commit-ish]ou [path]. Em alguns casos, isso faz com que o git diga que a notação é 'ambígua'. Se eu me lembro bem.
L0LN1NJ4
2
Isso não imprime nada quando tento o método na resposta e o método no comentário.
ray
@ray que significa que você não têm nenhuma diferença entre a árvore trabalhando e mais recente comprometer
Valerij vasilcenko
3
Para o @ray e futuros indivíduos que estão vendo isso, é possível incluir os ramos que você está tentando diferenciar, git diff master..develop myfolder/como o @CrandellWS disse no comentário sobre a pergunta original. O status Git mostrará as alterações, se é isso que você está procurando.
BVBAccelerate
2
@ray verifique se você está no diretório raiz. O caminho será relativo ao seu diretório atual.
Nickofthyme 19/10/2018
59
Se você estiver comparando ramificações diferentes, precisará --separar uma revisão do Git de um caminho do sistema de arquivos. Por exemplo, com duas ramificações locais mastere bryan-working:
Somente uma cláusula é necessária depois de listar os dois ramos, como em: git diff branch1 branch2 - caminho / para / dir
emery
4
Você deve criar o hábito de examinar a documentação para coisas assim. É muito útil e irá melhorar suas habilidades muito rapidamente. Aqui está a parte relevante quando você fazgit help diff
O sinal de igual parece estar errado para o git 2.17.1. Utilize git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"vez
Mark Schäfer
Observe que, ao usar o Beyond Compare para dir diff, você deve configurá-lo para seguir os links simbólicos (Em uma exibição de comparação de pastas -> Regras (ícone do árbitro) -> Tratamento -> siga os links simbólicos) OU, adicione a --no-symlinksopção para que o comando leiagit difftool --dir-diff --no-symlinks
Ashutosh Jindal
1
Não apenas você pode adicionar um caminho, mas também pode adicionar git diff --relativepara obter um resultado relativo a essa pasta.
git -C a/folder diff --relative
E com o Git 2.28 (terceiro trimestre de 2020), os comandos da difffamília " " aprenderam a honrar a " diff.relative" variável de configuração.
Assinada por: Laurent Arnoud Acked-by: Đoàn Trần Công Danh
A diff.relativeopção booleana configurada para truemostra apenas alterações no diretório / valor atual especificado pelo pathargumento da relativeopção e mostra os nomes de caminho relativos ao diretório mencionado acima.
git diff master..yourbranch path/to/folder
Respostas:
Forneça um caminho (myfolder neste caso) e apenas execute:
fonte
git diff -- myfolder
para minimizar a ambiguidade do git. A notação geral para git diff (e muitos comandos git) égit diff [commit-ish] -- [path]
onde commit-ish assume como padrão HEAD (onde você está agora) e[path]
assume como padrão o diretório raiz do git, mas pode ser qualquer coisa relativa ao diretório atual. Sem o--
, o git vai adivinhar o que você quer dizer,[commit-ish]
ou[path]
. Em alguns casos, isso faz com que o git diga que a notação é 'ambígua'. Se eu me lembro bem.git diff master..develop myfolder/
como o @CrandellWS disse no comentário sobre a pergunta original. O status Git mostrará as alterações, se é isso que você está procurando.Se você estiver comparando ramificações diferentes, precisará
--
separar uma revisão do Git de um caminho do sistema de arquivos. Por exemplo, com duas ramificações locaismaster
ebryan-working
:Ou de uma filial local para um controle remoto:
fonte
Você deve criar o hábito de examinar a documentação para coisas assim. É muito útil e irá melhorar suas habilidades muito rapidamente. Aqui está a parte relevante quando você faz
git help diff
Os dois
<path>
s são o que você precisa alterar para os diretórios em questão.fonte
Adicione Beyond Compare como seu difftool no Git e adicione um alias para diffdir como:
Obtenha o gitdiff como:
Referência: Compare diretórios inteiros com git difftool + Além da comparação
fonte
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
vez--no-symlinks
opção para que o comando leiagit difftool --dir-diff --no-symlinks
Não apenas você pode adicionar um caminho, mas também pode adicionar
git diff --relative
para obter um resultado relativo a essa pasta.E com o Git 2.28 (terceiro trimestre de 2020), os comandos da
diff
família " " aprenderam a honrar a "diff.relative
" variável de configuração.Veja commit c28ded8 (22 de maio de 2020) por Laurent Arnoud (
spk
) .(Mesclado por Junio C Hamano -
gitster
- no commit e34df9a , 02 jun 2020)A documentação agora inclui :
fonte
Se você deseja excluir os subdiretórios, pode usar
fonte
Para usar o Beyond Compare como o difftool para o diretório diff, lembre-se de ativar os links simbólicos da seguinte maneira:
Em uma pasta Compare View → Rules (Ícone do árbitro):
E, em seguida, ative os links simbólicos e atualize os padrões da sessão:
OU,
configure o alias da seguinte maneira:
Observe que, em ambos os casos, todas as edições feitas no lado (esquerda ou direita) que se referem à árvore de trabalho atual são preservadas.
fonte