我想定义一个别名,使用git rev-parse --show-toplevel
将我进入git根目录。
目前,我在我的.bashrc
中将其定义为别名,这很好用:
alias gitroot='cd "$(git rev-parse --show-toplevel)"'
但是我知道你可以使用git别名运行shell命令,所以我想把命令放到我的.gitconfig
文件中,让我的文件看起来更清晰。
问题是,我不知道为什么我的别名不起作用。目前,在我的.gitconfig
文件中的[alias]
下有以下内容:
root = "!sh -c 'cd \"$(git rev-parse --show-toplevel)\"'"
但是当我运行git root
时,我仍然停留在当前目录。
我尝试了其他的shell别名,它们起作用了,例如别名say = "!sh -c 'echo \"$0\"'"
很好地工作:
$ git say hello
hello
虽然我注意到类似的cd
命令 (cd = "!sh -c 'cd \"$0\"'"
) 失败了:
~/repos/myproject$ git cd /home/
~/repos/myproject$
我不确定是因为我的语法还是Git别名的怪癖不支持cd
命令,还是完全与其他原因有关。
如果有帮助的话,我正在使用Git 1.7.9.5。