Git: 1. Elenca tutti i file in un ramo, 2.compara i file da un ramo diverso


88
  1. Alla ricerca di un comando come ls -Ro dir/sche possa elencare tutti i file in un commit / branch.
  2. Esiste un comando in grado di confrontare due file di rami diversi?

Risposte:


136
  1. git ls-tree -r --name-only <commit>(dove invece che <commit>ci può essere <branch>).
    Potresti voler usare anche l' -topzione che elenca le sottodirectory prima di discenderle
  2. git diff <branchA>:<fileA> <branchB>:<fileB>,
    Oppure se si desidera confrontare lo stesso filegit diff <branchA> <branchB> -- <file>

4
Se vuoi elencare una directory specifica puoi aggiungere i due punti seguiti dal percorso del ramo, ad esempio: git ls-tree -r --name-only master: directory / path / name
Miller the gorilla

25

Per confrontare lo stesso file da rami diversi:

git diff branch_1..branch_2 file.txt

Per elencare tutti i file in un oggetto albero:

git ls-tree -r branch

Ottengo "git: 'ls' non è un comando git. Vedi 'git --help'." e sto usando git v 2.19.0.
Andrew S

1
Non è solo ls, hai dimenticato -treela fine :)
Dan Loewenherz

Ah ho pensato che fosse ls -tree. Ho pensato che l'albero fosse un interruttore. Grazie.
Andrew S

24

Per elencare tutti i file aggiunti nel nuovo ramo

git diff --name-only branch1 master

4
Questo elenca solo i nomi di tutti i file che sono stati modificati, non solo i nuovi file.
Meredith

2

A partire da Git v2.1.0 [15/08/14]

Per l'elenco, è possibile utilizzare git ls-filesl'elenco di tutti i file in modo ricorsivo nell'indice corrente / directory di lavoro. Puoi fare riferimento a Git-SCM Docs / git-ls-files o digitare man git-ls-filesse hai installato Git e hai pagine man disponibili.

Ha opzioni piacevoli per visualizzare i file in modi diversi, come cached, staged, deleted, modified, ignoredo othersper la non tracciata. Supporta anche modelli di corrispondenza. Avere anche --debugun'arg, si può facilmente elencare creation time, modification time, inode id, owner & group id, sizee flagsper i file.


Per la differenza di due rami, usa semplicemente git diff <branch> <other branch>come indicato in altre risposte.


2

Elenca i file nel ramo con estensione git ls-files

  1. Prova git ls-filesdescritto nel documento git-scm :
# Switch to <branch> of interest
$ git checkout <branch>
# List all files in <branch>
$ git ls-files

Per ulteriori opzioni consultare la documentazione .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.