我15岁,刚开始使用源代码控制系统来更好地管理我的代码,所以我对这些东西有点新鲜。现在我有这个存储库:
[a]---[b]---[d]---[f] master
\
\
[c]---[e] develop
我想结束这里:
[a]---[b]---[d]---[f]---[g] master
\ /
\ /
[c]---[e]---/ develop
其中g
相当于在[c]
上执行提交[e]
和[f]
。这是git checkout master; git merge develop
,对吧?
答案 0 :(得分:6)
您绘制的图片看起来像git merge
的结果,但您对想要发生的事情的描述听起来像git rebase
。
借用git社区图书的"Rebasing" chapter,如果您在mywork
分支上并说
$ git merge origin
你会得到
将合并视为将两个不同的快照拼凑在一起:在这种情况下,C4和C6组合在一起制作C7。
Rebase创建一个看起来就像C7的树,但它的历史看起来完全不同。说而不是合并,你给了命令
$ git rebase origin
你会得到
当你发现自己希望时,'我真的希望我在C4而不是C2创建mywork
分支,'git rebase
是将授予它的djinni。
您还可以将rebase视为从历史中删除分支并将其移植到不同的点上。不要错过从C5和C6到C5'和C6'的细微变化。虽然树木看起来一样,但它们会有不同的父母,从而改变了他们的git身份。
答案 1 :(得分:1)
您想要git checkout master; git merge develop
。
这是因为git merge
将您要将合并到当前已检出的分支的分支的名称。因此,您检查所需的目标分支(主),然后将其他分支合并到其中(开发)。
如果您查看git-merge
man page上的第一个“说明”部分,您会看到与您的图表几乎完全相同的图表(尽管是垂直翻转),这个图表描述了这一点。
答案 2 :(得分:1)
答案 3 :(得分:0)
进入'master'分支是git checkout master
,然后git merge develop
将'develop'分支合并到当前的'master'分支。