我一直在阅读并重新阅读有关成功的git模型(git flow)的帖子,我在处理开发分支时对一些事情感到困惑。他说:
开始处理新功能时,从开发分支分支。
$ git checkout -b myfeature develop
我正试图绕过它 - 关闭它再次重新阅读并找到一些基于此模型的截屏视频。
答案 0 :(得分:3)
develop
)。运行命令后,无论以前签出什么,他都会在myfeature
分支上。develop
是一个本地分支,可能跟踪您的远程跟踪分支origin/develop
。git checkout -b myfeature
会在HEAD
处创建一个新分支。如果您位于develop
分支的顶端,则myfeature
将基于develop
。myfeature
引用develop
提示引用的相同提交。什么都没有“复制”。在签出myfeature
时提交更改时,myfeature
提示将更新为新提交。 develop
不会改变。如果要在远程位置查看更改,则需要将其推送到远程位置。只是合并到本地分支不会为远程端做任何事情。
如果你想“完成”你的功能,git-flow-style,我猜你想要将完成的功能纳入开发部分:切换到develop
,合并在myfeature
中,删除myfeature
,然后将现已更新的develop
推送到origin
。
[e]更多答案:
在两种情况下,新分支都从develop
开始。 (git branch
的工作方式相同,只是它不会像git checkout -b
那样切换到新的分支。)
粗略地说,虽然git push origin
并不总是“aka origin / develop”。默认情况下,git push origin
将推送具有相同名称(或已设置为跟踪)原始分支的所有本地分支。 (您可以使用push.default
配置设置更改默认值。)git push origin develop
会将您的本地开发分支推送到origin的开发分支,这就是您想要的。
只有你强行推动(严重的是,不要这样做)。您可以在合并后执行拉动,但之后您基本上会合并两次。首先进行拉取会更好,但如果不这样做,则不会有丢失数据的风险。
当然,如果其他人推送了origin/develop
的更新,并且您想要合并他们的更改。基本上,如果您希望将功能分支保持最新状态并且尚未准备好合并到develop
,则可以将myfeature
合并到develop
。
在git-flow系统中,myfeature
应始终返回develop
,发布分支始终从develop
开始。 develop
应该是准备好进行外部暴露的变更分支 - 用于集成测试,发布候选者,等等 - 以及代表项目当前开发状态的分支。这是所有新东西的起点。您不希望最终在myfeature
分支和一些随机发布分支中工作,而不是主develop
行。
答案 1 :(得分:0)
当您使用显式起点时,您当前使用的分支无关紧要。语法是:
git branch <branchname> [<start-point>]
如果你没有指定一个起始点,git将分支你当前所在的任何分支。但是,使用明确的起始点,您可以在.git / refs / heads中列出的任何头部创建新分支。
至于其他人:
答案 2 :(得分:0)
在这里很晚才进入,但你应该考虑你所引用的模型被许多人视为不良做法的可能性。请参阅此blog post。
它的要点是,虽然您可以将GIT用于类似于非分布式版本控制系统的分支模型,但这并不意味着您应该这样做。如果您打算这样做,请问问自己,我是否应该首先选择GIT。没有快进的合并尤其受到批评,因为它剥夺了GIT提供的许多优势/工具。
我还没有意见。我自己就是消化所有这些东西。