将自己的分支合并到主分支的简单且最好的方法

时间:2015-06-15 10:48:12

标签: git

MainBranch中说出我的主要分支。我已经建立了一个本地分支Test

我继续在我的本地分支上工作,同时我做了几次提交并多次将它推送到我当地的分支机构。

现在,我的工作已完成,我想将其合并到MainBranch

我想将其合并到MainBranch的小费。

我试过了:

git checkout `MainBranch`
git merge `Test`
git commit -m "Merging to main branch".

它工作正常,但它也显示我的本地提交,这些都是非必需品。

有没有办法将本地分支合并到MainBranch而不显示我的本地提交?

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

  

它工作正常,但它也显示我的本地提交   真的没必要。

如果您不想显示本地提交,请使用--squash开启git merge命令。

来自git merge documentation

  

<强> - 壁球
   - 没有壁球

     

生成工作树和索引状态,就像发生了真正的合并一样(合并信息除外),但实际上并没有   进行提交,移动HEAD或记录$ GIT_DIR / MERGE_HEAD(导致   下一个git commit命令来创建合并提交)。这可以让你   在当前分支的顶部创建单个提交,其效果是   与合并另一个分支相同(或者在章鱼的情况下更多)。

     

使用--no-squash执行合并并提交结果。这个选项   可以用来覆盖--squash。

要了解有关隐藏微提交的更多信息,this SO question似乎是一个很好的资源。

答案 1 :(得分:2)

正如达文写的那样,

--squash是最简单的方法。

如果您仍希望将某些粒度保留到您的分支(即分支显示太多小提交,但您不希望将所有内容放入一个太大而无法提交的单个提交中掌握),你可以尝试互动rebase

git rebase允许您选择哪些提交压缩在一起,以及哪些提交要与其他提交分开。它甚至可以将一个提交分成几个提交。

  

-i   --interactive

     

列出即将重新定位的提交。让用户在变基之前编辑该列表。这种模式可以   也可用于拆分提交(请参阅下面的拆分请求)。

如果您实际上不介意具有粒度,但希望将其与主分支视觉分离,您可能会对merge选项--no-ff感兴趣,请参阅{{3} }。

只有在您创建分支Test(下面提交A)后主分支中没有任何内容发生时,这才会生效。开始示例:

A - MainBranch
 \
  B---C---D - Test

git checkout MainBranch && git merge Test之后,您有一条线性历史记录行,例如:

A---B---C---D - Test - MainBranch

MainBranch的历史不是很干净或容易理解。

相反,您可以运行git merge --no-ff Test,并将分支分开:

A-----------M - MainBranch
 \         /
  B---C---D - Test

,M是合并提交。

这是我通常的工作流程。