繁体   English   中英

Git Bash:尝试将当前分支分配给变量 in.bashrc 别名脚本,但变量仍然为空

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM