elm*_*rco 40 git bash scripting
我想要一个简单的git命令来访问存储库的"根".
我开始使用脚本,但想到我无法更改shell的活动目录,我不得不做一个功能.不幸的是,我不能用非破折号形式"git root"直接调用它.
function git-root() {
if [ -d .git ]; then
return 0
fi
A=..
while ! [ -d $A/.git ]; do
A="$A/.."
done
cd $A
}
Run Code Online (Sandbox Code Playgroud)
你有更好的解决方案吗?(功能写得很快,欢迎提出建议)
Pet*_*ter 56
之前已经问过,有没有办法在一个命令中获取git根目录?他写道,复制@ docgnome的答案
cd $(git rev-parse --show-cdup)
Run Code Online (Sandbox Code Playgroud)
如果您愿意,请创建一个别名:
alias git-root='cd $(git rev-parse --show-cdup)'
Run Code Online (Sandbox Code Playgroud)
Chr*_*tin 44
更简单,窃取是否有办法在一个命令中获取git根目录?,并制作一个别名(由彼得建议)
cd "$(git rev-parse --show-toplevel)"
Run Code Online (Sandbox Code Playgroud)
无论您是否在根目录中,这都有效.
Wil*_*ton 15
如果你在git root的子目录中,Peter的上述答案很有用.如果你已经在git root中,那么它会让你回到$ HOME.为了防止这种情况,我们可以使用一些bash条件.
if [ "`git rev-parse --show-cdup`" != "" ]; then cd `git rev-parse --show-cdup`; fi
Run Code Online (Sandbox Code Playgroud)
所以别名变成:
alias git-root='if [ "`git rev-parse --show-cdup`" != "" ]; then cd `git rev-parse --show-cdup`; fi'
Run Code Online (Sandbox Code Playgroud)
$ git config alias.root '!pwd'
$ git root
Run Code Online (Sandbox Code Playgroud)