2

我一直在阅读和重新阅读有关成功 git 模型(git flow)的帖子,在开发分支上工作时我对一些事情感到困惑。他说:

开始开发新功能时,从开发分支分支。

$ git checkout -b myfeature 开发

  1. 他是从哪个分支开始的?我签出的“开发”分支?
  2. “myfeature”之后的“develop”是跟踪我的本地“develop”分支还是远程“origin/develop”分支?
  3. 如果我在创建“myfeature”时从“开发”分支开始,最后是否需要“开发”?
  4. 'myfeature' 是否复制了开发分支的当前 HEAD?
  5. 如果我只想在开发服务器上查看我的更改,是否需要合并到本地开发或远程开发?

我正试图绕开它 - 重新阅读它并找到一些基于此模型的截屏视频。

4

3 回答 3

3
  1. 没关系,因为他明确设置了基本提交(develop)。myfeature命令运行后,无论之前签出什么,他都会在分支上。

  2. develop是可能跟踪origin/develop您的远程跟踪分支的本地分支。

  3. 没有。git checkout -b myfeature,没有明确的起点,将在您的HEAD. 如果你在develop分支的顶端,myfeature将基于develop.

  4. 不完全是。myfeature引用与引用提示相同的提交develop。没有什么是“复制”的。当您在myfeature签出时提交更改时,myfeature提示将更新为新的提交。develop不会改变。

  5. 如果您想在远程位置查看更改,则需要推送到远程位置。只是合并到本地分支不会对远程端做任何事情。

    如果你想“完成”你的功能,git-flow-style,我猜你想要在开发部分合并一个完成的功能:切换到develop、合并myfeature、删除myfeature,然后将现在更新的内容推develop送到origin.

[e] 更多答案:

  • 如果我从开发内部分支,那和做的一样;git checkout -b myfeature 在不开发时开发?

新分支从这develop两种情况开始。(git branch工作方式相同,但它不会像git checkout -b那样将您切换到新分支。)

  • 为了完成我的功能,我会检查开发 > git pull > git merge myfeature > git push origin (aka origin/develop)?

粗略地说,虽然git push origin并不总是“又名起源/发展”。默认情况下git push origin,将推送所有同名(或已设置为跟踪)分支的本地分支。(您可以使用配置设置更改默认值push.default。)git push origin develop只会将您的本地开发分支推送到源的开发分支,这就是您想要的。

  • 如果我在合并之前不拉,我冒着覆盖其他人所做的新提交的风险,对吗?

仅当您强制推动时(说真的,不要那样做)。您可以在合并后进行拉动,但实际上您将合并两次。首先进行拉取效果更好,但如果不这样做,您不会有丢失数据的风险。

  • 有没有时候我会将开发合并到我的功能中?

当然,如果其他人已将更新推送到origin/develop并且您想要合并他们的更改。本质上,如果你想保持你的特性分支是最新的并且你还没有准备好合并develop到.myfeaturedevelop

  • myfeature 是否每个都合并到发布分支中,还是应该总是回到开发中?

在 git-flow 系统中,myfeature应该总是回到develop,而发布分支总是从develop. develop应该是为外部暴露做好准备的更改分支——用于集成测试、候选发布等——以及代表项目当前开发状态​​的分支。这是所有新事物的起点。你不想在myfeature分支和一些随机发布分支中结束你的工作,但不是主线develop

于 2012-06-08T00:35:21.623 回答
0

在这里很晚才出现,但您应该考虑到您引用的模型被许多人认为是不好的做法的可能性。请参阅此博客文章

它的要点是,虽然您可以将 GIT 用于类似于非分布式版本控制系统的分支模型,但这并不意味着您应该这样做。如果您打算这样做,请问自己,我是否应该首先选择 GIT。没有快进的合并被特别批评为剥夺了 GIT 提供的许多优势/工具。

我还没有意见。我只是在自己消化所有这些东西。

于 2014-03-11T02:23:31.473 回答
0

当您使用显式起点时,您当前在哪个分支上并不重要。语法是:

git branch <branchname> [<start-point>]

如果您不指定起点,git 将分支您当前所在的任何分支。但是,通过明确的起点,您可以从 .git/refs/heads 中列出的任何头创建新分支。

至于其余的:

  • Develop 应该是 origin/develop 的跟踪分支。
  • 当您可视化历史记录时,您的新功能分支最初看起来就像开发的同义词,因为在您进行一些提交之前,提交引用指针是相同的。
  • 列表项 5 超出了您当前问题的范围。问另一个。:)
于 2012-06-08T00:10:58.670 回答