Elenca tutti i file che sono mai esistiti in un repository Git


109

Hai un modo pulito per elencare tutti i file che sono mai esistiti nel ramo specificato?

Risposte:


136

Questa è una variazione semplificata della soluzione di Strager :

git log --pretty=format: --name-status | cut -f2- | sort -u

Modifica: Grazie a Jakub per avermi insegnato un po 'di più nei commenti, questa versione ha una pipeline più breve e offre a git maggiori opportunità di fare le cose per bene.

git log --pretty=format: --name-only --diff-filter=A | sort -u

8
@Dustlin: Aggiungi --diff-filter = Un'opzione (elenca solo i file aggiunti). La versione corrente (senza sed che filtra solo i file aggiunti) fallirebbe se hai abilitato il rilevamento della ridenominazione e hai rinominato nella cronologia. Penso che tu possa quindi usare --name-only invece di --name-status e rimuovere 'cut -f2-' dalla pipeline.
Jakub Narębski

In uno dei miei repository, ottengo un bel po 'di righe duplicate (incluso un numero di righe vuote all'inizio dell'output) con il secondo comando che non sono duplicati con il primo.
Slipp D. Thompson

Se hai bisogno di un po 'più di informazioni rispetto al nome del file: $ git log --pretty = format: "% h% an [% cd]:% s" --name-only | cut -f2- | sort -u | grep Filename.ext
Nitay

3
Nota: --allè qualcosa di cui avrai bisogno se hai più di una singola mancia orfana. Ad esempio, più storie separate in un repo.
ThorSummoner

2
--diff-filter=Aignora i file che sono stati creati copiando un file già esistente, quindi aggiungerlo potrebbe non essere sempre quello che desideri.
cmbuckley

13

Questo fa la cosa giusta per controllare se un nome di file è mai stato presente nel repository non solo nel ramo corrente.

git log --all --pretty=format: --name-only --diff-filter=A | sort - | grep fubar

3

Puoi correre git-log --name-status, che fa eco qualcosa come:

commit afdbbaf52ab24ef7ce1daaf75f3aaf18c4d2fee0
Author: Your Name <your@email.com>
Date:   Tue Aug 12 13:28:34 2008 -0700

    Added test file.

A       test

Quindi estrai i file aggiunti:

git-log --name-status | sed -ne 's/^A[^u]//p' | sort -u

2

Ecco due utili alias: FindFile ffe FindFilewithCopies ffc:

# Find if one file ever had into repository
ff = "!git log --pretty=format: --name-status --all -M -B | sort -u | grep $1   #"
# The same as above but showing copied files
ffc = "!git log --pretty=format: --name-status --all -C -M -B | sort -u | grep $1 #"

Ottieni informazioni sui nomi dei file e sulle operazioni con essi.

Uso del campione:

$ git ff create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php

$ git ffc create
A       database/migrations/2014_10_12_000000_create_users_table.php
A       database/migrations/2014_10_12_100000_create_password_resets_table.php
A       database/migrations/2015_05_11_200932_create_boletin_table.php
A       database/migrations/2015_05_15_133500_create_usuarios_table.php
C052    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_11_210246_create_boletin_nosend_table.php
D       database/migrations/2015_05_12_000000_create_users_table.php
M       database/migrations/2015_05_11_200932_create_boletin_table.php
R051    database/migrations/2014_10_12_000000_create_users_table.php    database/migrations/2015_05_12_000000_create_users_table.php
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.