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

时间:2015-06-12 14:40:21

标签: git alias

我试图按照this answer中的说明创建一个罗嗦的git命令的别名:

  

编辑.gitconfig文件以添加此代码段:

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

我有两个问题:

  1. 我在哪里可以在Mac OS X上找到.gitconfig
  2. 如何从命令行执行此操作?
  3. 按照简单的说明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:]]'
    

    ......看起来他不像我以为我在设置。

1 个答案:

答案 0 :(得分:3)

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

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

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

没有!git的尝试可以避免这个问题,但除非你告诉Git别名是一个完整的shell命令(与直接转到Git命令),否则你无法管理进一步的命令。 / p>

shell插入双引号,但不是单引号,因此反转alias命令中的引号,或者转义内部单引号:

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