Git flow 在远程服务器上是否会删除分支?

46

我正在使用git和git flow。 这里的git flow有一个develop分支。 每当我需要开始新功能时,我会输入

git flow feature start new

创建了一个新的分支feature/new。然后我进行更改并使用commit提交了它们。

git push origin feature/new

提交更改后,我使用

完成功能。

git flow feature finish new

它在本地删除了feature/new分支。现在我通过Git Flow切换到develop分支,然后再次输入命令:

git push origin develop

这会使更改应用到远程服务器中的 develop 分支。

如果我输入 git branch -a,新分支会从本地删除,但它仍在服务器上以名称 remotes/origin/feature/new 存在。

Git Flow 是否会删除在本地机器上删除的远程服务器上的分支?

请告诉我是否犯了一些错误。

3个回答

43

源代码 看来,只有在使用 git flow feature finish -F 命令时才会删除远程特性分支。

然而,这会在完成特性之前从远程获取最新版本。根据 文档

-F 在执行完成命令之前从 $ORIGIN 获取最新版本

否则,您可以使用以下命令手动 删除 远程分支:

git push origin :feature/new

还要注意,如果您从未将该分支推送到像“git push --set-upstream origin branch”这样的远程服务器上,当调用“git flow feature finish”时,您将永远没有远程分支。 - Nick N

30

我建议使用git-flow AVH Edition。

像Stefan所说,原始版本仅在使用-F时才删除远程分支,这有点奇怪。AVH版修复了这种古怪的行为,它将始终在完成时删除本地和远程特性分支,除非您指定:

  • --keep,保留本地和远程。
  • --keeplocal,保留本地,但删除远程。
  • --keepremote,保留远程,但删除本地。

您可以在github上找到git-flow AVH版。


AVH Edition是否也更好地处理feature pull?我刚刚设置了一个赏金,因为原始的git-flow中的feature pull非常令人困惑(https://dev59.com/-WMl5IYBdhLWcg3wbGd1),感谢任何输入以获得一个权威答案。 - dashesy
特性拉取命令将在2.0版本中被弃用,只有特性跟踪命令可用。 - Peter van der Does
有没有一种方法可以自动标记特性分支 HEAD 在删除之前的位置?我喜欢在 git-web 中看到小绿色标签,但是当远程被删除时,这些标签也会消失。 - avatarofhope2
注意:Git for Windows中的git-flow AVH版是默认设置。您可以通过运行“git flow version”来确认此设置。 - geekley
1
另外,您可以通过例如 git config gitflow.feature.finish.keepremote true 更改默认行为。 - geekley

7

我的任务:

git flow feature delete -f name_feature

-f选项在feature分支内有变更时是必需的。
git push origin --delete feature/name_feature

这意味着需要删除远程分支。

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