为什么不“git flow feature pull”轨道?

时间:2013-08-23 22:19:41

标签: git git-flow

假设我已使用git flow feature start FEATURENAME

创建了一项新功能

然后用git flow feature publish FEATURENAME

发布

现在我的同事想和我合作这个功能,所以他确实

git flow feature pull FEATURENAME

这将根据远程仓库中的功能分支在其本地仓库上创建一个新分支。但是,这并不会将其本地功能分支设置为跟踪远程功能分支,因此现在他必须手动跟踪此分支。

这一额外步骤背后的原因是什么?为什么不将feature pull命令设置为跟踪?

git flow feature pullgit flow feature track之间的工作流程有何区别?

你会在哪些情况下使用这些?

2 个答案:

答案 0 :(得分:15)

听起来你正在使用git flow feature pull,你应该使用git flow feature track,因为这会创建一个跟踪遥控器的本地分支。

我无法想到为什么我会使用git flow feature pull。它创建了一个没有跟踪设置的本地分支,我不知道为什么它会有用!它的命名也很糟糕,因为拉动应该涉及合并,但事实并非如此。

答案 1 :(得分:8)

This answerbrainimus说明了功能分支的协作方面,使用了GitHub拉取请求方面,便于代码审查和讨论部分:

  
      
  1. 创建功能分支:git flow feature start module_1
  2.   
  3. 代码在功能分支
  4. 上更新   
  5. 提交更改时,会将其推送到GitHub(如果愿意,则推送到最后)
  6.   
  7. 功能完成后,在GitHub中打开拉取请求,比较develop和功能分支module_1
  8.   
  9. 团队审核拉取请求并发表评论
  10.   
  11. 拉取请求的任何更改都会发送到功能分支
  12.   
  13. 一旦所有更改都合并到功能分支上,功能分支就完成了:git flow feature finish module_1
  14.   
  15. develop分支被推送到GitHub(当发生这种情况时,GitHub会自动将拉取请求标记为已关闭/合并)
  16.   

这留下了关闭该分支的问题:

  

谁曾经运行git flow feature finish module_1将会删除其本地功能分支的奢侈品,但是任何检查分支的人都必须手动执行此操作

我建议使用git fetch --pruneespecially 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>.remotebranch.<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]
  

通过使用此命令,您将获得由团队成员推送的源代码,并且他们的更改将自动合并到您的本地分支
  如果有冲突,你将是不幸或幸运的人来解决这些冲突。