【问题标题】:Create a git alias to show files marked as --assume-unchanged?创建一个 git 别名以显示标记为 --assume-unchanged 的​​文件?
【发布时间】:2015-06-12 23:30:40
【问题描述】:

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

编辑您的 .gitconfig 文件以添加此 sn-p:

[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:]]'

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

【问题讨论】:

  • 应该在你的主目录中编辑 .gitconfig 文件。
  • 行得通!谢谢!但是我仍然对如何从命令行创建这样的别名很感兴趣...
  • !git 尝试的输出会有所帮助。
  • @Kristján:我已更新问题以包含此信息。

标签: git alias


【解决方案1】:

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

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

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

没有!git 的尝试避免了这个问题,但是除非你告诉 Git 别名是一个完整的 shell 命令(而不是直接到 Git 命令),否则你不能通过管道传递到更多命令。

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

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

【讨论】:

  • 这适用于终端:git config --global alias.ignored '!git ls-files -v | grep "^[[:lower:]]"' 谢谢!
猜你喜欢
  • 2012-10-06
  • 2013-06-16
  • 2011-01-22
  • 2011-08-31
  • 2018-03-03
  • 2013-04-27
  • 2016-01-30
  • 2012-08-30
  • 1970-01-01
相关资源
最近更新 更多