wxy*_*xyz 9 git version-control merge
我今年15岁,刚开始使用源代码控制系统来更好地管理我的代码,所以我对这些东西有点新意.现在我有这个存储库:
[a]---[b]---[d]---[f] master
\
\
[c]---[e] develop
Run Code Online (Sandbox Code Playgroud)
我想结束这里:
[a]---[b]---[d]---[f]---[g] master
\ /
\ /
[c]---[e]---/ develop
Run Code Online (Sandbox Code Playgroud)
其中,g相当于执行提交[c]和[e]上[f].这是git checkout master; git merge develop吧?
你画的画面看起来像是结果git merge,但你对你想要发生的事情的描述听起来像git rebase.
借用git社区书籍的"重新定位"一章,如果你在mywork分支上说
$ git merge origin
你会得到

将合并视为将两个不同的快照拼凑在一起:在这种情况下,C4和C6组合在一起制作C7.
Rebase创建一个看起来像C7的树,但它的历史看起来完全不同.说而不是合并,你给了命令
$ git rebase origin
你会得到的

当你发现自己希望时,'我真的希望我mywork在C4而不是C2 创建分支',git rebase是djinni将授予它.
您还可以将rebase视为从历史中删除分支并将其移植到不同的点上.不要错过从C5和C6到C5'和C6'的细微变化.虽然树木看起来一样,但它们会有不同的父母,从而改变了他们的git身份.
你要git checkout master; git merge develop。
这是因为git merge采用要合并到当前签出分支的分支的名称。因此,您检查所需的目标分支(主分支),然后将另一个分支合并到其中(开发分支)。
如果您查看git-merge手册页上的第一个“描述”部分,您将看到一个与您的几乎相同的图表(尽管垂直翻转)来描述这一点。