我正在尝试为“合并到暂存”工作流程创建别名。
假设我已完成分支“dev / layout_fix”中的任务,并希望在提交后将其部署到暂存。
这是我的方式:
git checkout staging
git merge dev/layout_fix --no-ff
git push
git checkout dev/layout_fix
现在我尝试过这种方法:
[alias]
branch-name = "!git rev-parse --abbrev-ref HEAD"
stagify = "!git checkout staging && git merge $(git branch-name) --no-ff && git push && git checkout $(git branch-name)"
但由于结帐,别名branch-name为“staging”。
在签出分段之前,是否可以在变量中写入当前分支名称?
答案 0 :(得分:1)
在签出分段之前,是否有可能在变量中写入当前分支名称?
不确定。由于您使用!
为git别名添加前缀,因此它们只是shell脚本。因此,您可以将git命令的输出粘贴到变量中,就像使用任何shell脚本一样,例如:
[alias]
branch-name = "rev-parse --abbrev-ref HEAD"
mybranch = "!branch=$(git branch-name); echo my branch is: $branch"
根据定义,我可以运行:
git mybranch
得到:
my branch is: master
这应该足以让你前进。
答案 1 :(得分:0)
您可以使用git describe --exact-match --all
获取当前分支名称。
您可以编写脚本并将其部署到/usr/libexec/git
,而不是别名。你只需将它放在那里并称之为git-stagify
。我是从记忆中写的,但我相信这是默认路径。您可以使用git-pull
或您的发行版中提供的任何内容搜索locate
所在位置(使用短划线)。这将为您提供bash脚本环境的全部好处,仅在使用别名时可能会丢失。
答案 2 :(得分:0)
完整别名命令如下所示:
stagify = "!branch=$(git rev-parse --abbrev-ref HEAD) && git checkout staging && git merge $branch --no-ff && git push && git checkout $branch"
感谢@larsks的正确方法。