Git配置别名问题

时间:2016-02-04 15:50:32

标签: git bash shell merge git-config

我正在尝试为“合并到暂存”工作流程创建别名。

假设我已完成分支“dev / layout_fix”中的任务,并希望在提交后将其部署到暂存。

这是我的方式:

  1. git checkout staging
  2. git merge dev/layout_fix --no-ff
  3. git push
  4. git checkout dev/layout_fix
  5. 现在我尝试过这种方法:

    [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”。

    在签出分段之前,是否可以在变量中写入当前分支名称?

3 个答案:

答案 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的正确方法。