【问题标题】:git flow release finish with a message that contains spacesgit flow release 以包含空格的消息结束
【发布时间】:2026-01-08 22:20:02
【问题描述】:

如何向git flow release finish 提供真实信息?

这是我的尝试,它的输出如下所示:

> git flow release finish -m 'Release 0.0.4 - Fixing a bug' 0.0.4
flags:FATAL the available getopt does not support spaces in options

我可以让它工作的唯一方法是在消息中不使用任何空格。

【问题讨论】:

  • 你试过双引号吗?
  • 是的,双引号也有同样的问题
  • 你运行的是什么操作系统?

标签: git git-flow


【解决方案1】:

我有同样的问题,但得到不同的错误信息:

$ git flow release finish -m 'Release 0.0.4 - Fixing a bug' 0.0.4
fatal: too many params
Tagging failed. Please run finish again to retry.

设法提出了一个非常难看的解决方法,但似乎对我有用,这使得它可以在脚本中使用。

这个想法是:

  1. 使用标签消息填充文件
  2. 将 git 编辑器命令设置为简单的移动命令(git 为我们提供了目标目的地)
  3. 完成 git flow 发布
  4. 取消设置 git 编辑器命令

不知道您使用的是哪个操作系统,但这是我在 Ubuntu 上使用的序列。

$ echo 'Release 0.0.4 - Fixing a bug' > .git/MY_TAGMSG
$ git config core.editor "mv .git/MY_TAGMSG"
$ git flow release finish 0.0.4
$ git config --unset core.editor

【讨论】:

  • 这对我很有帮助,因为我正在使用 Phing 自动发布。谢谢!
【解决方案2】:

试试命令“git flow version”。

如果你有类似 0.X 的东西,让这个工作的简单方法是使用新的 CLI for git-flow

你可以在这里找到它:

https://github.com/petervanderdoes/gitflow/wiki

所以对我来说(在 MacOsX 上)解决方案是:

sudo brew unlink git-flow 
sudo brew install git-flow-avh

【讨论】:

    【解决方案3】:

    你有最新的 gitflow 吗?您的版本似乎不支持 get-opt 选项中的空格。您应该尝试以下解决方法:

    安装最新的 gitflow:

    $ git clone git://github.com/nvie/gitflow.git

    $ cd gitflow

    $ git svn clone -r HEAD http://shflags.googlecode.com/svn/trunk/source/1.0shFlags

    $ sudo make install

    从 Homebrew 安装 gnu-opt:

    $ brew install gnu-getopt

    $ echo 'export FLAGS_GETOPT_CMD="$(brew --prefix gnu-getopt)/bin/getopt"' >> ~/.bashrc

    $ . ~/.bashrc # 注意句点然后 ~/.bashrc 或者只是启动一个新终端

    $ echo $FLAGS_GETOPT_CMD

    应该返回一些以“bin/getopt”结尾的东西,然后试试你的命令。 . .

    【讨论】:

    • git svn 是一个有效的命令吗?当我尝试运行它时出现错误
    • git-svn 不是核心 git 命令,您需要安装它 - 即 apt-get install git-svn 或您的操作系统的等效项。