comment `git ls-files` pour un seul niveau de répertoire.
Je suis en utilisant msysgit (1.7.9), et je suis à la recherche pour le droit à l'invocation de la git ls-files
commande pour afficher seulement le (suivi) des fichiers et des répertoires à son niveau actuel, soit à partir de l'index, ou le répertoire de travail actuel si c'est plus facile.
Essentiellement, cela permettrait de donner une liste de répertoire semblable à celle que vous pouvez voir sur Github. Venant de Windows, je ne suis pas trop familier avec la bonne façon de faire de l'expansion(?).
source d'informationauteur Philip Oakley
Vous devez vous connecter pour publier un commentaire.
Je pense que vous voulez
git ls-tree HEAD
sed avais le goût. Le deuxième mot de ls-arbre de sortie seratree
pour les répertoires,blob
pour les fichiers,commit
pour submodulesm, le nom de fichier est tout ce qui est après l'ascii ongletJe crois
git ls-tree --name-only [branch]
à faire ce que vous êtes à la recherche pour.git ls-tree <tree-ish>
est bon et tout, mais je ne peux pas comprendre comment spécifier l'indice comme le<tree-ish>
. (Même si je suis sûr qu'il y en aura forcément quelques majuscules, en référence à le faire.)De toute façon,
ls-files
implicitement travaux sur l'index de sorte que je pourrais tout aussi bien l'utiliser:Cette affiche que les fichiers et répertoires dans le répertoire courant.
Changement
cut
's-f
argument pour le contrôle de la profondeur. Par exemple,-f-2
(c'est dash deux) affiche les fichiers et répertoires à deux niveaux de profondeur:SI vous spécifiez le
<path>
argumentls-files
assurez-vous d'augmenter-f
pour accueillir le leader des annuaires:Juste la liste des fichiers dans le répertoire de travail en cours sont suivis par git, j'ai trouvé que celui-ci est plusieurs fois plus rapide que l'utilisation
git ls-tree...
:Il faudrait un peu de déconner avec le sed si vous voulez également inclure des répertoires, quelque chose le long des lignes de:
en supposant que vous n'avez pas de '/' caractères dans les noms de vos fichiers. Ainsi que...
ls -a | grep -f <(git ls-files | sed 's/\/.*//g' | sort | uniq)
afin également de la liste "invisible" (encore suivies) des fichiers.
Je suis surpris c'est tellement dur... mais ne me lancez pas sur mon ronchonner à propos de git.
Une variante sur jthill la réponse semble être aliasable (hé, je suis un linguiste, j'ai une licence pour faire de nouveaux mots). La variante est
Il utilise 'ls' pour le format de sortie, de sorte que vous obtenez le codage de la couleur (si vous utilisez), etc. Il fonctionne aussi comme un alias:
FWIW, vous pouvez également alias le récursive de commande, de sorte que vous avez utilisé le " ls " mise en forme (par exemple, si votre chemin d'accès+les noms de fichiers ne sont pas trop longs, vous bénéficiez de deux colonnes de sortie, le codage couleur des exécutables, etc.)