git merge是否将提交重新应用于另一个提交?
我15岁,刚刚开始使用源代码管理系统更好地管理我的代码,所以我对这方面有点陌生。现在我有了这个存储库:git merge是否将提交重新应用于另一个提交?,git,merge,version-control,Git,Merge,Version Control,我15岁,刚刚开始使用源代码管理系统更好地管理我的代码,所以我对这方面有点陌生。现在我有了这个存储库: [a]---[b]---[d]---[f] master \ \ [c]---[e] develop 我想在这里结束: [a]---[b]---[d]---[f]---[g] master \ / \ / [c]---[e]--
[a]---[b]---[d]---[f] master
\
\
[c]---[e] develop
我想在这里结束:
[a]---[b]---[d]---[f]---[g] master
\ /
\ /
[c]---[e]---/ develop
其中
g
相当于在[f]
上执行提交[c]
和[e]
。这是git签出主机;git合并开发
,对吗?您想要的是git签出主机;git合并开发
这是因为git merge
采用要合并到当前签出分支中的分支的名称。因此,您可以签出所需的目标分支(主分支),然后将另一个分支合并到其中(开发)
如果您查看上的第一个“描述”部分,您将看到一个与您的描述几乎相同的图表(尽管垂直翻转)。进入“主”分支的是
git checkout master
,然后git merge-develope
将“develope”分支合并到当前的“master”分支。关于合并的另一个重要帮助是和。您绘制的图片看起来像是git-merge
的结果,但您对希望发生的事情的描述听起来像git-rebase
如果你在mywork
分支上,并说
$ git merge origin
$git合并原点
你会得到
将合并想象为将两个不同的快照塞进一起:在本例中,C4和C6一起构成C7
Rebase创建了一个看起来像C7的树,但是它的历史看起来完全不同。比如说,不是合并,而是您发出了命令
$ git rebase origin
$git重新设置基准原点
你会得到
当你发现自己希望“我真的希望我在C4而不是C2创建了mywork
分支,git-rebase
是将授予它的吉尼
你也可以把rebase看作是从你的历史中删去一个分支,然后把它移植到另一个地方。不要错过从C5和C6到C5'和C6'的细微变化。虽然这些树看起来是一样的,但它们会有不同的父母,从而改变它们的git身份。15岁使用git的孩子,太棒了+1假设没有两个提交涉及同一个文件。无论是合并还是重定基址,最终都会得到相同的结果,对吗?@wxyz是的,生成的树将是相同的,但它们的历史记录将不同,如上图所示。使用
git-rebase
可以帮助保持历史记录的线性。