web-dev-qa-db-fra.com

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

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

109
Anonymous

Si vous souhaitez répertorier tous les fichiers d'une branche spécifique, par exemple master:

git ls-tree -r maître --nom-seul 

L'option -r lui permettra de récupérer dans des 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 de toute autre branche dans laquelle vous vous trouvez.

Si vous souhaitez obtenir une liste de tous les fichiers ayant déjà existé, voir ici :

git log --pretty = format: --name-only --diff-filter = A | trier -u 
119
slhck

La commande git ls-files fera ce dont vous avez besoin.

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

55
Mihai Capotă

git ls-files imprimera uniquement les fichiers du répertoire de travail en cours.

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

En bref, cela fonctionnera:

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 d'accès soient spécifiés relative dans votre répertoire actuel (Shell), le travail est exécuté:

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
4
AndiDog

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

0
JPaget