如何别名git流修补程序完成[当前\u修补程序\u分支]

如何别名git流修补程序完成[当前\u修补程序\u分支],git,alias,git-flow,Git,Alias,Git Flow,git flow在任何时候只允许一个热修复程序分支。因此,与其打字,不如说: git flow hotfix finish hotfix_branch 我想创建一个别名,该别名使用唯一现有的修补程序分支名称。类似于以下伪代码: [alias] fix-done = flow hotfix finish `git_fetch_branch_beginning_with_hotfix` 有人能帮忙吗?谢谢 更新:我正在使用zsh。此函数或多或少是从的源代码中提取的: finish_curre

git flow在任何时候只允许一个热修复程序分支。因此,与其打字,不如说:

git flow hotfix finish hotfix_branch
我想创建一个别名,该别名使用唯一现有的修补程序分支名称。类似于以下伪代码:

[alias]
  fix-done = flow hotfix finish `git_fetch_branch_beginning_with_hotfix`
有人能帮忙吗?谢谢


更新:我正在使用zsh。

此函数或多或少是从的源代码中提取的:

finish_current_hotfix_branch ()
{
  local hotfix_prefix=$(git config --get gitflow.prefix.hotfix)
  local hotfix_branches=$(echo "$(git branch --no-color | sed 's/^[* ] //')" | grep "^$hotfix_prefix")
  local first_branch=$(echo ${hotfix_branches} | head -n1)
  first_branch=${first_branch#$hotfix_prefix}
  git flow hotfix finish "$first_branch"
}
更新

似乎您必须将整个函数放在别名中。不太好,但很有效:

[alias]
  fix-done ="!_() { p=$(git config --get gitflow.prefix.hotfix); b=$(echo \"$(git branch --no-color | sed 's/^[* ] //')\" | grep \"^$p\"); f=$(echo ${b} | head -n1); f=${f#$p}; git flow hotfix finish \"$f\"; }; _"

下面是执行git flow修补程序完成别名的另一种方法:

hf = "!_() { b=$(git rev-parse --abbrev-ref HEAD) && git co master && git pl && git co develop && git pl && git co $b && git rebase master && h=$(echo $b | sed 's/hotfix\\///g') && git flow hotfix finish -m 'new_tag' $h && git co master && git ps && git co develop && git ps && git ps --tags && git poo $b && git br -D $b;  }; _"

如果您运行git flow AVH Edition,您可以

$ git flow finish
当你在树枝上时,你想要完成。这适用于热修复、发布、功能和错误修复

检查是否运行git flow AVH Edition

$ git flow version
x.xx.x (AVH Edition)

谢谢,当前的_hotfix_分支适用于我,但在git alias中使用时不适用。作为更新,我正在使用zsh,所以我将该方法保存在.zshrc中。对于git别名,有什么想法吗?Thanks@ZacZheng你说得对,这样不行。我已经更新了我的答案。谢谢@Stefan。我已经接受了,因为它能胜任这项工作。尽管如此,仍然可以找到一个不那么突兀的解决方案!