我是GIT
和GIT-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
问题:
github
[我的远程命名来源]我可以看到分支功能/ new_feature。git flow
的抽象那么,每次使用git-flow
时,你们是否必须从所有遥控器中删除所有功能分支?
我做错了吗?
答案 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
之前没有新的进化,然后再删除它。