我在我的全局git配置中有以下Git别名。
pushnew = !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push --set-upstream origin $tmp_branch; unset $tmp_branch; }; f
运行时会得到以下输出:
* [new branch] bug/graphs -> bug/graphs
Branch bug/graphs set up to track remote branch bug/graphs from origin.
f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push --set-upstream origin $tmp_branch; unset $tmp_branch; }; f: 1: unset: bug/graphs: bad variable name
我看到了这个问题,但如果那是解决方案,那么在Git别名上如何应用这个修复?
git push --set-upstream origin "$tmp_branch"
。这可以防止单词拆分,当变量值中有空格时,以及通配符扩展,当存在像*
这样的字符时。 - Tom Fenechgit branch
的输出中使用grep
命令。您需要使用git symbolic-ref HEAD
(可能还要使用--short
参数)。请参阅https://dev59.com/5HI-5IYBdhLWcg3w9thw。 - Etan Reisnertmp_branch
,因为它是由 Git 创建的子 shell 中定义的。也没有必要导出它;您只需要在定义它的同一 shell 中扩展它,而不是在子进程中。f() { git push --set-upstream origin "$(git symbolic-ref HEAD)"; }
应该就足够了。 - chepner