创建一个 git 别名以显示标记为 --assume-unchanged 的​​文件?

Create a git alias to show files marked as --assume-unchanged?

我正在尝试按照 this answer 中的说明为冗长的 git 命令创建别名:

Edit your .gitconfig file to add this snippet:

[alias]
    ignored = !git ls-files -v | grep "^[[:lower:]]"

我有两个问题:

  1. 我在哪里可以找到 Mac OS X 上的 .gitconfig
  2. 如何从命令行执行此操作?

按照简单的说明 here,我试过了...

git config --global alias.ignored "ls-files -v | grep '^[[:lower:]]'"

git config --global alias.ignored "!git ls-files -v | grep '^[[:lower:]]'"

第一个命令成功,但 git ignored 没有输出。第二个告诉我我做错了。


编辑:这是我 运行 第二个命令时发生的情况:

$ git config --global alias.ignored "!git ls-files -v | grep '^[[:lower:]]'"
git config --global alias.ignored "git push -u origin --all ls-files -v | grep '^[[:lower:]]'"
$ git ignored
Expansion of alias 'ignored' failed; 'git' is not a git command

执行此命令后,.gitconfig 文件包含...

[alias]
    ignored = git push -u origin --all ls-files -v | grep '^[[:lower:]]'

...这看起来不像我以为我正在设置的命令。

正如@maggick 在评论中所说,.gitconfig 进入您的主目录。

您的第二个命令失败,因为您的 shell 将 "!git" 解释为历史搜索。例如:

$ echo 'hi'
hi
$ cat < /dev/null
$ !echo
echo 'hi'
hi

你在没有 !git 的情况下的尝试避免了这个问题,但是你不能通过管道传输到更多的命令,除非你告诉 Git 别名是一个完整的 shell 命令(相对于直接到Git command) 伴随一声巨响。

shell 插入双引号,但不是单引号,因此在别名命令中反转引号,或转义内部单引号:

$ git config --global alias.test '!git ls-files -v | grep "foo"'