【问题标题】:`git flow release finish` non-interactively`git flow release finish` 非交互方式
【发布时间】:2021-12-25 21:52:06
【问题描述】:

如何以不要求合并提交消息的方式使用git flow release finish?正如我所料,-m 标志没有提供此功能。

当然,目标是能够以不需要交互的方式编写脚本。

【问题讨论】:

标签: git command-line git-flow


【解决方案1】:

可以设置环境变量

export GIT_MERGE_AUTOEDIT=no

git flow release finish -m 'Merge Message' release_branch_name

unset GIT_MERGE_AUTOEDIT

合并时它不会调用编辑器。

如果您切换到我的 fork git-flow AVH Edition,您可以将此选项设置为仅在您使用 git-flow 时有效。

【讨论】:

  • 注意:使用 unset GIT_MERGE_AUTOEDIT 将其关闭(在脚本的末尾,因为很明显,如果您正在阅读此问题,您正在尝试编写 git-flow 脚本)
  • -m 合并消息也是必须的,否则编辑器也会出现。并且必须在命令行参数中的发布分支名称之前指定。
  • 这个 Abhi 是哪个版本的 git? git 文档没有说你需要消息标志:git-scm.com/docs/git-merge/#git-merge---no-edit
  • 您可以避免在许多 shell 中取消设置 GIT_MERGE_AUTOEDIT,只需在命令期间设置它:GIT_MERGE_AUTOEDIT=no git flow release finish -m 'Finished.' 1.0.0
【解决方案2】:

我在使用 -m 标志时遇到了问题。但是,如果您提供没有空格的消息,它会起作用。一定是个bug。

git flow release finish -m 'my_message_with_no_spaces' 1.2.3

【讨论】:

  • 我也遇到了这个问题。 flags:FATAL the available getopt does not support spaces in options
【解决方案3】:

git flow (或多或少)只是git 命令的包装。弹出打开您选择的git-flow-*.sh,复制 git 命令,然后将它们弄乱。在这种情况下,将--no-edit 添加到git merge。这种方法一石二鸟:您只需将这些行复制到您的自动化脚本中即可。

【讨论】:

  • 喜欢这种方法!使更改永久化。我还在 git-flow-release 脚本中添加了 -m "" 以防止需要标记消息
【解决方案4】:

我已经完成了:

git flow release finish -m "New release:$releaseVersion" -T
$releaseVersion -S $releaseVersion

其中-m 是提交消息,-T 是标记消息,-S 是壁球提交。现在一切都会自动运行:)

【讨论】:

    【解决方案5】:

    不幸的是,当前版本的 git-flow 没有开箱即用的方法来实现这一点。

    通过查看source code,用于合并的git命令为

    git merge --no-ff
    

    并且没有办法将--no-edit 标志传递给它。

    你可以做几件事:

    • fork 项目并插入此功能(可能作为可选标志)
    • 将其作为一项功能提出并等待开发人员实施

    【讨论】:

      【解决方案6】:

      您可以通过-m 标志在命令行上指定标签消息。

      合并仍有可能发生冲突,但标签操作不会尝试打开标签消息的编辑器。

      git flow release finish -m "my awesome release" 1.2.3
      

      https://github.com/nvie/gitflow/wiki/Command-Line-Arguments#git-flow-release-finish--fsumpkn-version

      【讨论】:

        【解决方案7】:

        我不知道 git flow,但如果它支持标准 git 标志,您可以在自动设置中使用 --no-edit 标志到 avoid merge commit messages

        【讨论】:

          【解决方案8】:

          最后我通过这段代码得到了这个作品:

          export GIT_MERGE_AUTOEDIT=no
          git flow release finish "$newVer" -m "$newVer" -T "$newVer"
          unset GIT_MERGE_AUTOEDIT
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-05-28
            • 2017-02-14
            • 2022-07-26
            • 2012-11-11
            • 1970-01-01
            • 2012-05-05
            • 1970-01-01
            • 2012-09-05
            相关资源
            最近更新 更多