我试图按照this answer中的说明创建一个罗嗦的git命令的别名:
编辑.gitconfig文件以添加此代码段:
[alias] ignored = !git ls-files -v | grep "^[[:lower:]]"
我有两个问题:
.gitconfig
?按照简单的说明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:]]'
......看起来他不像我以为我在设置。
答案 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"'