git ls-files în Git

Listează fișierele din index (urmărite de Git), dar și fișierele modificate, neurmărite sau ignorate.

Sintaxă comandă
git ls-files [opțiuni] [-- <cale>...]

Ce face git ls-files

git ls-files arată ce fișiere se află în index, adică ce va conține următorul commit. Este o comandă „de instalație” (plumbing), gândită pentru scripturi, dar foarte utilă și în terminal când vrei să știi exact ce urmărește Git.

Cu opțiuni poți afla ce fișiere sunt modificate (-m), care sunt noi și neurmărite (--others) sau care sunt ignorate de .gitignore (--ignored). Spre deosebire de git status, ieșirea are câte un fișier pe linie, ușor de trimis mai departe altor comenzi.

Opțiuni și argumente

Opțiune / Parametru Descriere
-c, --cached Fișierele din index (comportamentul implicit).
-m, --modified Fișierele urmărite care au modificări nesalvate.
-d, --deleted Fișierele urmărite șterse din directorul de lucru.
-o, --others Fișierele neurmărite.
--exclude-standard Aplică regulile din .gitignore și .git/info/exclude (folosit cu -o sau -i).
-i, --ignored Fișierele ignorate (cere -o sau -c și reguli de excludere).
-s, --stage Afișează și modul, hash-ul obiectului blob și numărul de etapă.

Exemple

Exemplul 1: Ce fișiere urmărește Git

Fișierul parole.txt este ignorat, iar nou.txt nu a fost adăugat, deci niciunul nu apare.

git init -q -b main proiect
cd proiect
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
mkdir src
echo 'print("Salut, Iasi")' > src/main.py
echo 'parole.txt' > .gitignore
echo 'secret' > parole.txt
git add . && git commit -q -m "Start"
echo 'ciorna' > nou.txt
git ls-files

Rezultat

.gitignore
src/main.py

Exemplul 2: Fișiere modificate, neurmărite și ignorate

Trei întrebări diferite despre același director de lucru.

git init -q -b main proiect
cd proiect
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
echo 'parole.txt' > .gitignore
echo 'Ana: 9' > note.txt
git add . && git commit -q -m "Start"
echo 'Ana: 10' > note.txt
echo 'secret' > parole.txt
echo 'ciorna' > nou.txt
echo "modificate:"; git ls-files -m
echo "neurmarite:"; git ls-files --others --exclude-standard
echo "ignorate:";   git ls-files --others --ignored --exclude-standard

Rezultat

modificate:
note.txt
neurmarite:
nou.txt
ignorate:
parole.txt

Exemplul 3: Numărarea fișierelor urmărite, pe tip

Ieșirea cu un fișier pe linie se combină ușor cu alte comenzi din terminal.

git init -q -b main site
cd site
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
touch index.html contact.html stil.css app.js meniu.js
git add . && git commit -q -m "Site"
git ls-files '*.html' | wc -l | tr -d ' '
git ls-files '*.js'

Rezultat

2
app.js
meniu.js

Greșeli frecvente

  • Confuzia cu ls: git ls-files nu arată ce e pe disc, ci ce e în index. Un fișier șters cu rm dar încă neconfirmat apare în continuare (vezi opțiunea -d).
  • Folosirea --ignored fără --exclude-standard (sau un alt --exclude): fără reguli de excludere comanda afișează o eroare.

Comenzi înrudite

  • git status: Afișează starea fișierelor: modificate, pregătite pentru commit (staged) sau neurmărite (untracked).
  • git add: Adaugă modificările din directorul de lucru în zona de pregătire (staging area/index) pentru următorul commit.
  • git grep: Caută un text sau o expresie regulată în fișierele urmărite de Git, în directorul de lucru sau în orice commit din istoric.
  • .gitignore: Fișier de configurare care specifică fișierele și directoarele ignorate intenționat de Git.