Git Flow:完成功能后,您是否必须从远程手动删除功能分支?

时间:2012-06-22 05:51:01

标签: git version-control github git-flow

我是GITGIT-Flow的新手。 [在我的python-django项目中]

我做了什么:

git flow feature start new_feature
# perform some commits on the feature/new_feature branch

git push origin feature/new_feature

git flow feature finish new_feature
# I suppose that merges feature/new_feature to develop and deletes feature/new_feature

git push origin develop # Pushes the new changes to remote

问题:

  • 我的本地计算机上似乎删除了feature / new_feature分支。
  • 但在github [我的远程命名来源]我可以看到分支功能/ new_feature。
  • 我很困惑,它不应该显示已删除的分支。
  • 我四处寻找解决方案 - 但是他们说你应该手动删除它们,这似乎不适合git flow的抽象

那么,每次使用git-flow时,你们是否必须从所有遥控器中删除所有功能分支?

我做错了吗?

1 个答案:

答案 0 :(得分:6)

如果你做过git push origin(在本地检出feature),请知道当前的默认推送政策是默认的。
这意味着(git config man page

  

matching - 推送两端具有相同名称的所有分支。

可是:

  

目前这是默认设置,但 Git 2.0会将默认设置更改为simple

     

upstream - 将当前分支推送到其上游分支   有了这个,git push将更新与git pull合并的同一个远程ref,使push和pull对称。

(因为feature最初在GitHub中没有上游分支,所以不会被推送)

(政策变更为in discussion for the past few months

所以现在,如果您确实将feature分支推送到GitHub,在将其本地合并到develop并推送develop之前,则需要从GitHub中删除您的功能分支:< / p>

git push origin :feature

如果您在此过程中未在任何时间点指定标记“fetch”,则git flow不会删除要素分支的唯一原因。 See sources

# delete branch
if flag fetch; then
  git push "$ORIGIN" ":refs/heads/$BRANCH"
fi

这意味着你应该做了

git flow feature finish -F new_feature

我们的想法是首先获取并确保其他贡献者在GitHub上添加new_feature之前没有新的进化,然后再删除它。