git merge重新应用提交到另一个提交吗?

时间:2010-06-12 17:23:27

标签: git merge version-control

我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,对吧?

4 个答案:

答案 0 :(得分:6)

您绘制的图片看起来像git merge的结果,但您对想要发生的事情的描述听起来像git rebase

借用git社区图书的"Rebasing" chapter,如果您在mywork分支上并说

$ git merge origin

你会得到

git merge history

将合并视为将两个不同的快照拼凑在一起:在这种情况下,C4和C6组合在一起制作C7。

Rebase创建一个看起来就像C7的树,但它的历史看起来完全不同。说而不是合并,你给了命令

$ git rebase origin

你会得到

alt text

当你发现自己希望时,'我真的希望我在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)

关于合并的另一个很好的帮助是http://progit.org/book/ch3-2.htmlhttp://gitref.org/branching/#merge

答案 3 :(得分:0)

进入'master'分支是git checkout master,然后git merge develop将'develop'分支合并到当前的'master'分支。