Git 配置别名问题



我正在尝试为我的"合并到暂存"工作流创建别名。

假设我已经在分支"dev/layout_fix"中完成了一项任务,并希望在提交后将其部署到暂存。

这是我的方式:

  1. git checkout staging
  2. git merge dev/layout_fix --no-ff
  3. git push
  4. 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)"

但是由于结帐,别名分支名称是"暂存"。

是否可以在签出暂存之前将当前分支名称写入变量?

是否可以在签出暂存之前将当前分支名称写入变量?

确定。 由于您在 git 别名前面加上 ! ,它们只是 shells 脚本。 因此,您可以将 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

这应该足以让你继续前进。

完整的别名命令如下所示:

stagify = "!branch=$(git rev-parse --abbrev-ref HEAD) && git checkout staging && git merge $branch --no-ff && git push && git checkout $branch"

感谢@larsks的正确方法。

您可以使用

git describe --exact-match --all 获取当前分支名称。

您可以编写脚本并将其部署到 /usr/libexec/git 。你只需要把它放在那里,叫它git-stagify。我是根据记忆写的,但我相信这是默认路径。您可以通过搜索git-pull所在的位置(带破折号)、使用locate或发行版中可用的任何内容来找到它。这将为您提供 bash 脚本环境的全部好处,而这些好处在仅使用别名时可能会丢失。

最新更新