假设我已使用git flow feature start FEATURENAME
然后用git flow feature publish FEATURENAME
现在我的同事想和我合作这个功能,所以他确实
git flow feature pull FEATURENAME
这将根据远程仓库中的功能分支在其本地仓库上创建一个新分支。但是,这并不会将其本地功能分支设置为跟踪远程功能分支,因此现在他必须手动跟踪此分支。
这一额外步骤背后的原因是什么?为什么不将feature pull
命令设置为跟踪?
git flow feature pull
和git flow feature track
之间的工作流程有何区别?
你会在哪些情况下使用这些?
答案 0 :(得分:15)
听起来你正在使用git flow feature pull
,你应该使用git flow feature track
,因为这会创建一个跟踪遥控器的本地分支。
我无法想到为什么我会使用git flow feature pull
。它创建了一个没有跟踪设置的本地分支,我不知道为什么它会有用!它的命名也很糟糕,因为拉动应该涉及合并,但事实并非如此。
答案 1 :(得分:8)
- 创建功能分支:
git flow feature start module_1
- 代码在功能分支
上更新- 提交更改时,会将其推送到GitHub(如果愿意,则推送到最后)
- 功能完成后,在GitHub中打开拉取请求,比较
develop
和功能分支module_1
- 团队审核拉取请求并发表评论
- 拉取请求的任何更改都会发送到功能分支
- 一旦所有更改都合并到功能分支上,功能分支就完成了:
git flow feature finish module_1
- 醇>
develop
分支被推送到GitHub(当发生这种情况时,GitHub会自动将拉取请求标记为已关闭/合并)
这留下了关闭该分支的问题:
谁曾经运行
git flow feature finish module_1
将会删除其本地功能分支的奢侈品,但是任何检查分支的人都必须手动执行此操作
我建议使用git fetch --prune
,especially since Git 1.8.5 you can set that "prune" step in your config:如果在服务器端删除了您的功能分支(由其他人制作git flow feature finish
),则简单的git fetch将删除您的功能分支< / p>
gitflow feature track如果AVH edition只是结帐并跟踪分支,那就是确保本地分支成为本地跟踪分支,并关联upstream branch(远程跟踪分支)它
也就是说,它会设置branch.<name>.remote
和branch.<name>.merge
。
如果您执行了git flow feature pull
(对于新的本地功能分支),但实际上意味着git flow feature track
,那么您需要做的就是make your existing branch track the upstream one:
git branch -u origin/feature
一般而言:
git flow feature track
,git flow feature pull
git flow feature checkout
如“Getting Started – Git-Flow”中所述:
git flow feature pull
当多人同时处理某项功能时,即可完成此操作 如果要对远程功能分支进行拉取,则应使用此命令,如下所示:
git flow feature pull [alias] [featureName]
通过使用此命令,您将获得由团队成员推送的源代码,并且他们的更改将自动合并到您的本地分支。
如果有冲突,你将是不幸或幸运的人来解决这些冲突。