10

我是新手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[ My remote named origin ] 上,我可以看到分支功能/new_feature。
  • 我很困惑,它不应该显示已删除的分支。
  • 我环顾四周寻找解决方案 - 但他们说你应该在远程手动删除它们,这似乎不适合抽象git flow

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

难道我做错了什么 ?

4

1 回答 1

6

如果您曾经做过git push originfeature在本地签出),请知道当前的默认推送策略是默认的。
这意味着(git config手册页

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

但:

这是目前的默认值,但Git 2.0 会将默认值更改为simple.

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

(由于feature最初在 GitHub 中没有上游分支,因此不会推送)

(过去几个月正在讨论政策的变化)

所以现在,如果你确实将你的feature分支推送到了 GitHub,在将它本地合并到develop并推送之前develop,你需要从 GitHub 中删除你的功能分支:

git push origin :feature

如果您在过程中的任何时候都没有指定标志“”,那么git flow不会删除功能分支的唯一原因。见资料fetch

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

这意味着你应该做一个

git flow feature finish -F new_feature

这个想法是先获取并确保在删除之前没有其他new_feature贡献者在 GitHub 上添加新的进化。

于 2012-06-22T07:13:20.757 回答