【问题标题】:Why doesn't "git flow feature pull" track?为什么“git flow feature pull”不跟踪?
【发布时间】:2013-08-27 02:10:33
【问题描述】:

假设我使用git flow feature start FEATURENAME 创建了一个新功能

然后用git flow feature publish FEATURENAME发布它

现在我的同事想与我合作开发此功能,所以他愿意

git flow feature pull FEATURENAME

这会根据远程 repo 中的功能分支在他的本地 repo 上创建一个新分支。然而,这并没有设置他的本地特性分支来跟踪远程特性分支,所以现在他必须手动跟踪这个分支。

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

git flow feature pullgit flow feature track 之间的工作流程有何不同。

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

【问题讨论】:

  • 如果你的同事在git pull 之前feature pull 之前会变得更加混乱。
  • 我想使用git-flow,但我还需要弄清楚如何做功能协作部分,所以会为此设置一个赏金,希望能得到一个更好的想法。

标签: git git-flow


【解决方案1】:

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

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

【讨论】:

  • git flow feature [pull, track, checkout] 很混乱。
  • 当您已经在跟踪一个分支并且只想获取和合并时,不使用 {{pull}} 吗?
【解决方案2】:

brainimusThis answer 说明了功能分支的协作方面,使用了促进代码审查和讨论部分的 GitHub 拉取请求方面:

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

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

曾经运行过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 将删除您的功能分支


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]

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

【讨论】:

  • 还有关于使用官方 git-flow 或 AVH 版本的建议吗?
    我最近对在 git pull 之后出现分歧的功能分支感到困惑,并希望为我们的团队。
  • @dashesy 我详细说明了gitflow feature branch [pull, track, checkout]之间的区别
  • @VonC 这并没有真正解决一个人为什么想要pull 而不是track 的问题(现在根据经验,我得出的结论是没有真正的理由做pull)。您的答案的第一部分与该主题完全无关。关于第二部分 - 没有gitflow feature push 命令。
  • @OpherV 抱歉打错了:我的意思是拉而不是推。跟踪完成后,您可以通过gitflow feature pull 保持本地分支机构的最新状态。我确实参考了 AVH。
猜你喜欢
  • 2015-02-03
  • 2011-02-24
  • 2011-03-04
  • 2017-10-17
  • 2014-03-29
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多