[英]Git Bash: Trying to assign current branch to variable in .bashrc alias script, but variable remains empty
我正在尝试在我的.bashrc
中注册一个脚本别名,以便轻松地从当前分支切换到主分支、拉取、切换回分支以及变基。
目前,我的别名脚本如下所示:
alias gmm="branch=$(git rev-parse --abbrev-ref HEAD);
echo \"Switching from '$branch' to 'master'\";
git checkout master;
git pull;
echo \"Switching from 'master' to '$branch'\";
git checkout $branch;
git rebase master"
但是,当前分支似乎并没有保存到branch
变量中,命令打印如下:
Mai@DESKTOP-M71G3R MINGW64 /c/dev/git/myrepo (testing)
$ gmm
Switching from '' to 'master'
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Authorized uses only. All activity may be monitored and reported
Already up to date.
Switching from 'master' to ''
Your branch is up to date with 'origin/master'.
Successfully rebased and updated refs/heads/master.
我已经检查过命令本身确实获取了当前分支名称:
Mai@DESKTOP-M71G3R MINGW64 /c/dev/git/myrepo (testing)
$ branch=$(git rev-parse --abbrev-ref HEAD)
Mai@DESKTOP-M71G3R MINGW64 /c/dev/git/myrepo (testing)
$ echo $branch
testing
我花了几天时间在谷歌上搜索,但我无法弄清楚变量分配失败的位置和原因。
您应该按照此处的建议对别名内容使用单引号。 使用双引号时, $(git rev-parse --abbrev-ref HEAD)
将在执行.bashrc
时解析,并且可能会变成空字符串。 如果您改用单引号,则$(git rev-parse...)
将在运行gmm
时解析,这意味着它正确地成为当前分支的名称。
alias gmm='branch=$(git rev-parse --abbrev-ref HEAD);
echo "Switching from '\''$branch'\'' to master";
git checkout master;
git pull;
echo "Switching from master to '\''$branch'\'';
git checkout "$branch";
git rebase master'
最好我会使用 bash function 而不是别名,这样更方便。
gmm() {
local branch=$(git rev-parse --abbrev-ref HEAD);
echo "Switching from $branch to master";
git checkout master;
git pull;
echo "Switching from master to $branch";
git checkout "$branch";
git rebase master
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.