假设我用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
的工作流程有何不同。
在哪种情况下,你会分别使用这些?
听起来像是在使用git flow feature pull
,而应该使用git flow feature track
,因为这确实创建了一个跟踪远程的本地分支。
我真的想不出为什么我会使用git flow feature pull
。它创建了一个没有跟踪设置的本地分支,我不知道为什么这会有用!它的名称也很糟糕,因为pull应该涉及合并,而这并没有。
brainimus的回答说明了功能分支的协作方面,使用GitHub拉取请求方面,这有助于代码审查和讨论部分:
- 创建要素分支:
git flow feature start module_1
- 代码在功能分支上更新
- 当提交更改时,它们会被推送到GitHub(如果愿意,也可以在最后推一次)
- 当功能完成时,在GitHub中打开一个拉取请求,比较
develop
和功能分支module_1
- 团队审查撤回请求并提出意见
- 拉取请求中的任何更改都将对功能分支进行更改
- 一旦所有更改都包含在特征分支上,特征分支就完成了:
git flow feature finish module_1
develop
分支被推送到GitHub(当这种情况发生时,GitHub会自动将pull请求标记为关闭/合并)
不过,这就留下了关闭该分支机构的问题:
任何运行过
git flow feature finish module_1
的人都可以奢侈地删除他们的本地功能分支,但其他使用签出分支的人如果想,则必须手动执行此操作
我建议使用git fetch --prune
,尤其是在Git1.8.5之后,您可以在配置中设置"修剪"步骤:如果您的功能分支在服务器端被删除(由其他人制作git flow feature finish
),则简单的Git提取将删除它
gitflow功能跟踪AVH版本是否只是签出并跟踪分支,即确保本地分支成为本地跟踪分支,并与上游分支(远程跟踪分支)关联。
即设置branch.<name>.remote
和branch.<name>.merge
。
如果你做了一个git flow feature pull
(针对一个新的本地功能分支),但实际上是git flow feature track
,那么你所需要做的就是让你现有的分支跟踪上游的分支:
git branch -u origin/feature
一般情况:
- 您使用CCD_ 22启动
- 然后使用
git flow feature pull
保持本地功能分支的最新状态 - 使用
git flow feature checkout
在功能分支之间切换
正如"入门-Git流程"中提到的:
git flow feature pull
当多个人一起使用某个功能时,将执行此操作
如果您想按如下方式拉动远程功能分支,则应使用此命令:
git flow feature pull [alias] [featureName]
使用此命令,您将获得队友推送的源代码,他们的更改将自动合并到您的本地分支
如果发生冲突,你将是不幸或幸运的一个来解决这些冲突。