Skip to content

Print a directory tree that shows Git status and ignores files dictated by .gitignore.

License

Notifications You must be signed in to change notification settings

jpwilliams/gitree

Repository files navigation

@jpwilliams/gitree

Print a directory tree that shows Git status and ignores files dictated by .gitignore.

$ npm i -g @jpwilliams/gitree
$ gitree

# OR

$ npx @jpwilliams/gitree

What?

gitree works very similarly to tree but only lists files related to the current git repository.

Like Git, gitree only tracks files, so empty directories will never be listed. If you wish to push an empty folder to a Git repository, add an empty .gitignore or .gitkeep file to the directory and commit it.

What does it show?

gitree shows any files that your repository's .gitignore files allows you to see, marking them with useful statuses like the ones in the screenshot above.

What if it's not a Git repository?

It won't work. You must be somewhere within a Git repository to list any files. If you just want a basic tree view without Git integration, consider the built-in tree command for Linux/Windows or the tree homebrew formula for Mac OSX.

What else can it do?

Just this stuff:

Usage: gitree [options] [dir]


Options:

  -V, --version           output the version number
  -m, --modified          only show modified files
  -t, --tracked           only show tracked files
  -c, --collapse          collapse directory nodes that contain a single child
  -d, --devicons          print matching devicons next to files
  -I, --ignore <pattern>  do not list files that match the given pattern
  -h, --help              output usage information

Note that for devicons to work, you must have a font with devicon glyphs installed. A good place to start is Nerd Fonts.

Can it get any cooler?

There's a built-in alias, gt. Fantabulous, eh?

Alternatives

The wonderful ogham/exa can print a similar tree without detailed change information/filtering with:

exa --git-ignore --tree --all --icons --ignore-glob .git