使用 ls 在 ZSH 中显示 git 状态概览

使用 ls 在 ZSH 中显示 git 状态概览

我正在使用 zsh 和zsh-git-提示符并且运行良好。当我进入 git 存储库文件夹时,我收到有关 git 状态的通知:

thomas@linux-fopt ~Path/to/Git/repo(localDevelop|✚2)% 

意思是,我在localDevelop分支上修改了两个文件。

现在,我非常希望获得当前我所在的文件夹中所有文件夹的概览,如下所示:

$ lsGit
  FolderA (master|+1)     (<- is a git repo)
  FolderB (develop|+2)    (<- is a git repo)
  FolderC                 (<- is not a git repo)

应忽略当前文件夹中的文件,仅显示文件夹。

有没有办法用 zsh 实现这一点?

答案1

这样够好吗?

user@host:~$ cat git-ls.zsh
#!/bin/zsh

source ~/zsh-git-prompt/zshrc.sh

for d in *; do
  if [[ -d "$d" && -e "$d/.git" ]]; then
    echo "$d $(cd "$d" && git_super_status | sed -r 's/(%G|%\{|%\})//g')"
  else
    echo "$d"
  fi
done

user@host:~/dev/external$ ~/git-ls.zsh
1-example-file
ansible (devel|✚2…)
asciinema.org (master|✔)
boltons (master|✔)
caffeine (master|✔)
casperjs (:4225d4c|✔)
Chronicle-Queue (master|✔)
citus (master|✔)
citus-docker (master|✔)
coreutils (master|✔)
cpython
ctop (keyerror_cpuacct_stat|…)
^C

编辑:如果您不关心文件,请参阅该帖子的第一次修订。

相关内容