192 votes

Git - Lister tous les fichiers actuellement sous contrôle de source ?

Existe-t-il un moyen de lister tous les fichiers actuellement sous contrôle de source dans git ? (Pas seulement ceux qui ont été modifiés).

194voto

slhck Points 209720

Si vous voulez lister tous les fichiers d'une branche spécifique, par exemple master :

git ls-tree -r master --name-only

El -r permet d'effectuer une recherche dans les sous-répertoires et d'imprimer chaque fichier actuellement sous contrôle de version. Vous pouvez également spécifier HEAD au lieu de master pour obtenir la liste pour toute autre branche dans laquelle vous pourriez être.

Si vous voulez obtenir une liste de tous les fichiers qui ont jamais existé, voir ici :

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

85voto

Mihai Capotă Points 1013

El git ls-files fera ce dont vous avez besoin.

Source : http://www.kernel.org/pub/software/scm/git/docs/git-ls-files.html

5voto

Cubic Points 11322

git ls-files n'imprimera que les fichiers du répertoire de travail actuel.

Si, par exemple, vous avez un dépôt git pour dotfiles ( core.worktree = / ), vous aurez alors des fichiers en dehors de la racine de git et cette simple commande ne fonctionnera plus.

En bref, cela va fonctionner :

git --git-dir "`git rev-parse --git-dir`" \
    -C "`git config core.worktree || pwd`" \
    ls-files

Exemple :

mkdir ~/dotfiles
cd ~/dotfiles
git config core.worktree /

# Ignore all files by default, else Git will find all files under "/"
echo "*" > .git/info/exclude

# Add files at the git repo's root and somewhere in the work tree
touch README
git add -f README
git add -f /etc/ssh/sshd_config

# `git status` would now print:
# new file:   ../../../etc/ssh/sshd_config
# new file:   README
git status

git commit -m "Initial commit"

# At this point, `git ls-files` prints only:
# README
git ls-files

# But you can print all files inside the work tree. This will print:
# etc/ssh/sshd_config
# home/yourusername/dotfiles/README
git --git-dir "`git rev-parse --git-dir`" -C "`git config core.worktree || pwd`" ls-files

Si vous voulez que les chemins soient spécifiés relatif dans votre répertoire courant (Shell), ceci fait le travail :

alias gls='git ls-tree -r master --name-only HEAD "`git config core.worktree`"'

et dans l'exemple ci-dessus, il imprimerait

README
../../../etc/ssh/sshd_config

0voto

JPaget Points 515

Vous pouvez également utiliser le gitk visualisateur interactif de référentiel.

-1voto

Amarnath MB Points 11

Screenshot

Regardez l'image, sur le côté droit il y a deux options : patch et arbre. Si vous sélectionnez arbre, vous pouvez voir la structure du dossier pour chaque commit.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X