Git: 1.Liste todos os arquivos em um branch, 2.compare os arquivos de um branch diferente

90
  1. Procurando por um comando como ls -Rou dir/sque pode listar todos os arquivos em um commit / branch.
  2. Existe algum comando que pode comparar dois arquivos de ramos diferentes?
Scud
fonte

Respostas:

137
  1. git ls-tree -r --name-only <commit>(onde em vez de <commit>pode haver <branch>).
    Você pode querer usar também a -topção que lista os subdiretórios antes de descer para eles
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    ou se você deseja comparar o mesmo arquivogit diff <branchA> <branchB> -- <file>
Jakub Narębski
fonte
4
Se você quiser listar um diretório específico, você pode adicionar dois pontos seguido pelo caminho para o ramo, ou seja: git ls-tree -r --name-only master: diretório / caminho / nome
miller the gorilla
27

Para comparar o mesmo arquivo de ramos diferentes:

git diff branch_1..branch_2 file.txt

Para listar todos os arquivos em um objeto de árvore:

git ls-tree -r branch
Dan Loewenherz
fonte
Eu recebo "git: 'ls' não é um comando git. Consulte 'git --help'." e estou usando o git v 2.19.0.
Andrew S
1
Não é só ls, você esqueceu o -treeno final :)
Dan Loewenherz
Ah, presumi que fosse ls -tree. Eu pensei que -tree era um interruptor. Obrigado.
Andrew S,
25

Para listar todos os arquivos adicionados no novo ramo

git diff --name-only branch1 master
Peter Mansell
fonte
4
Isso lista apenas os nomes de todos os arquivos que foram alterados, não apenas os novos arquivos.
Meredith
2

A partir do Git v2.1.0 [15/08/14]

Para listar, você pode usar git ls-filespara listar todos os arquivos recursivamente no índice atual / diretório de trabalho. Você pode consultar Git-SCM Docs / git-ls-files ou digitar man git-ls-filesse você instalou o Git e tem páginas de manual disponíveis.

Ele tem nice opções para mostrar arquivos de maneiras diferentes, como cached, staged, deleted, modified, ignoredou otherspara o untracked. Ele também oferece suporte a padrões de correspondência. Tendo também um --debugarg, você pode facilmente listar creation time, modification time, inode id, owner & group id, sizee flagspara arquivos.


Para a diferença de dois ramos, simplesmente use git diff <branch> <other branch>como indicado em outras respostas.

Berkant Ipek
fonte
2

Listar arquivos no ramo com git ls-files

  1. Tente git ls-filesdescrito no documento git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Para mais opções, verifique a documentação .

drstoop
fonte