致命错误:还未启用gitflow。请先运行“git flow init”。

30

我克隆了一个项目并运行了git checkout -b develop。当我运行 git flow feature start feature_name 时,它会给我以下错误:

致命错误:还没有启用gitflow。请先运行“git flow init”。

有人可以帮帮我吗?

11个回答

66
我按照jpflanswers.atlassian.com提供的步骤,使其正常工作:

虽然这是一篇旧文章,但我想增加一些内容,因为我也遇到了同样的错误。通过以下步骤解决了问题:

  1. 打开.git\config文件或存储库->存储库设置->远程->编辑配置文件(Sourcetree 2.7.6)
  2. 删除所有的[gitflow*条目并保存文件
  3. 关闭,并重新打开Sourcetree
  4. 在主菜单中,进入存储库>Git Flow>初始化存储库(现在应该启用)

很遗憾,这对我没有起作用。在编辑配置后,我收到了以下错误:git init -d 使用默认分支名称。 致命错误:本地分支“master”不存在。 哪个分支应该用于推出生产版本? - Takatalvi
@Takatalvi,你一开始就有主分支吗? - Anima-t3d
是的。唯一“奇怪”的名称是开发分支,在我的情况下称为development。在git flow的初始配置中,我使用了development作为develop分支,但它没有起作用,这也是sourcetree的一个bug。 - Takatalvi

26

你需要在本地仓库中初始化git flow。

GitFlow是在你的计算机上运行的本地脚本,每个仓库都必须拥有元数据(在配置文件中)才能使用它。

简单地运行:

# launch the git flow wizard
git flow init


# Use git flow with default values
git flow init -d

然后您就可以开始了。


1
我猜你的意思是 "git flow init -d" 而不是 "git flow -d",对吗? - Raúl Salinas-Monteagudo
我有相同的问题,而且我已经完成了 git flow init 的操作。这不是第一次创建流分支。这是另一个问题。 - Leigh Cheri

16

我的情况有所不同。

背景

如果你从未对特定的仓库进行过git flow初始化,或者已经进行了初始化并且想要重新应用该操作以清除一些错误状态,可以按照以下答案中的方法,首先清除.git/config文件中相关的条目。

我也使用SourceTree,并且注意到它出现了这个问题。

我最近做了与众不同的事情,就是清空了本地的master分支,而git flow可能会将其视为未经git flow初始化的仓库,即使我已经有了我的常规配置。

解决方案

我重新检出了master分支,现在git flow又可以正常工作了(例如开始一个新特性)!


2
+1 我不小心删除了本地主分支,就开始出现这个问题。检出主分支后,问题得到解决。 - A J Qarshi
是的,这是一个好答案。Git Flow 中存在一个 bug,如果没有主分支,它会声称它“尚未启用 GitFlow 仓库”。我会报告这个问题。 - Tom Anderson

9
如果任何人运行git flow init时出现错误,类似于这样的错误:git:'flow'不是git命令。请参见'git --help'。 请按照以下命令操作: wget http://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh –no-check-certificate chmod +x gitflow-installer.sh ./gitflow-installer.sh git flow init

这很有帮助,但不适用于当前问题的情况,问题中提到的错误不是找不到git flow。 - Zia Ul Rehman Mughal
@AbbeyJackson 尝试在我的回答中提供的解决方案。我尝试了其他方法,但我回答中描述的这个似乎是最简单直接的解决方案。 - Anima-t3d
@Anima-t3d 感谢您抽出时间回复,这个问题已经有一个可接受的答案了...本质上,我不知道gitflow是我必须初始化的东西。 - Abbey Jackson
@AbbeyJackson 我觉得你的机器缺少 wget,如何安装它:https://dev59.com/91sX5IYBdhLWcg3wY-nX#33902055 - Tai Le
感谢大家的跟进回复,2016年4月25日接受的答案是我需要做的。 - Abbey Jackson

5

我通过在SourceTree上执行以下步骤使其工作:

设置 -> 高级 -> 编辑配置文件 -> 删除所有gitflow *条目并保存文件

现在,您可以设置初始化存储库。


这对我也起作用了。我认为这不是 Sourcetree 特定的修复方法。相反,您可以转到 .git/config 并删除所有 gitflow 条目以重新开始。 - Daan Luttik
我按照你的步骤操作后发现无法再次初始化,因为找不到主分支。问题在于主分支在远程服务器上,所以我只需检出主分支,粘贴我的配置文件(在进行更改之前当然保存了一份副本),然后一切都恢复正常了。以防万一有人删除了他们的本地开发或生产分支,你必须重新检出。 - Fernando Bonet

2
你可以在<project_path>/.git/config中删除gitflow.prefix,然后再次运行git flow init

2
如果有人运行git flow init,但出现以下错误:git: 'flow' is not a git command. See 'git --help',那么说明你的系统上没有安装git flow。请查看GitFlow Wiki了解如何安装git flow。Mac和Linux最常见的安装方式如下:
brew install git-flow

Linux

apt-get install git-flow

2
“我安装的Windows版本的Git-2.17.1.2-64位存在一个导致此问题的错误。这里有一个在https://github.com/petervanderdoes/gitflow-avh/issues/372提出的解决方法:

编辑文件C:\Program Files\Git\usr\bin\gitflow-common,在$(git config --get-regexp gitflow.prefix >/dev/null 2>&1)之前添加一个!号...即在297行左右进行更改。


gitflow_is_initialized() {
gitflow_has_master_configured                    && \
gitflow_has_develop_configured                   && \
[ "$(git config --get gitflow.branch.master)" != "$(git config --get gitflow.branch.develop)" ] && \
! $(git config --get-regexp gitflow.prefix >/dev/null 2>&1)}

希望他们尽快修复这个问题。
更新于2018年07月23日:
即使使用上述修复方法,这个问题仍然存在。查看修复此问题的PR,实际上应该删除包围有问题行的$()。
git config --get-regexp gitflow.prefix >/dev/null 2>&1

0

如果您在MacOS上使用SourceTree 4.0版本(截至本文发布时的最新版本为2019年9月),即使运行了git flow init命令,您仍可能遇到相同的错误。

这可能是因为您重命名了任何分支(例如,将develop重命名为devel)。似乎在git flow中会出现某些错误,并且无法识别已重命名的分支(您还可能注意到错误提到的是默认分支名称,而不是您在初始化期间指定的重命名分支)。

在这种情况下的解决方案是:

  • 从存储库配置文件中删除任何 git flow 配置(请查看此帖子以了解如何执行:https://dev59.com/J1oU5IYBdhLWcg3w_atJ
  • 退出 Sourcetree(通过 CMD+Q 或菜单栏中的退出),然后重新启动 Sourcetree
  • 使用默认值初始化 git flow。您可以通过 Sourcetree 的 git flow 按钮或通过终端手动执行 git flow init -dgit flow init,然后接受所有默认建议的值来完成。
  • 从 Sourcetree 的分支列表中将本地分支重命名为您满意的名称
  • 再次打开存储库配置并将 git flow 配置中提到的分支重命名为您已经重命名的分支,并保存配置
  • 退出 Sourcetree(通过 CMD+Q 或菜单栏中的退出)

当您再次启动 Sourcetree 时,您现在应该能够正常使用 git flow。


0

运行 'git flow init',它将自动将所有分支初始化为相应的发布分支,如生产发布、下一个发布、热修复分支等。这是一个快照: enter image description here

如果您想重新初始化这些内容,可以编写: 'git flow init -f' 这将强制重新初始化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接