18

假设我创建了一个新功能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

在哪些情况下您会使用其中的每一个?

4

2 回答 2

16

听起来你正在使用git flow feature pull,你应该在哪里使用git flow feature track,因为这确实创建了一个跟踪远程的本地分支。

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

于 2013-09-04T10:44:06.340 回答
12

Brainimus的这个回答说明了功能分支的协作方面,使用 GitHub 拉取请求方面,这有助于代码审查和讨论部分:

  1. 创建一个功能分支:git flow feature start module_1
  2. 代码在功能分支上更新
  3. 提交更改后,它们会被推送到 GitHub(如果愿意,也可以在最后推送一次)
  4. 功能完成后,会在 GitHub 中打开拉取请求,比较develop功能分支module_1
  5. 团队审查拉取请求并发表评论
  6. 拉取请求中的任何更改都会对功能分支进行
  7. 一旦所有更改都合并到特性分支上,特性分支就完成了:git flow feature finish module_1
  8. 分支被推送到 GitHub(发生这种情况时,developGitHub 会自动将拉取请求标记为关闭/合并)

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

谁曾经运行过git flow feature finish module_1他们的本地功能分支将被删除,但其他任何签出分支的人都必须手动执行此操作

我会推荐一个git fetch --prune特别是从 Git 1.8.5 开始,你可以在你的配置中设置“修剪”步骤:一个简单的 git fetch 将删除你的功能分支,如果它已在服务器端被删除(由其他人制作git flow feature finish


如果AVH 版本只是签出和跟踪分支,则gitflow 功能会跟踪,即确保本地分支成为本地跟踪分支,并与上游分支(远程跟踪分支)相关联。 也就是说,它设置和。
branch.<name>.remotebranch.<name>.merge

如果你做了一个git flow feature pull(对于一个新的本地特性分支),但实际上意味着git flow feature track,你需要做的就是让你现有的分支跟踪上游分支

git branch -u origin/feature

一般来说:

  • , git flow feature track_
  • 然后你保持你的本地特性分支是最新的git flow feature pull
  • 您在功能分支之间切换git flow feature checkout

正如“入门 - Git-Flow ”中提到的:

git flow feature pull

这将在多人一起处理一项功能时完成
如果您想拉动远程功能分支,您应该使用此命令,如下所示:

git flow feature pull [alias] [featureName]

使用该命令,您将获得队友推送的源代码,他们的更改将自动合并到您的本地分支中。
如果有冲突,你将是解决这些冲突的不幸或幸运的人。

于 2014-01-05T00:31:11.310 回答