2015-11-04 110 views
2

我有一个功能分支有几个提交(见下文)。由于分支,主人也增加了一些提交。压缩Git合并后提交

因此,我将master合并到feature分支中。

git checkout feature 
git merge master 

这将导致以下日志历史上feature分支:

* E (HEAD) merging master into feature 
|\ 
| * D feature commit 2 
| | 
| * C feature commit 1 
* | B master commit 2 
|/ 
* A master commit 1 

在现实中,特征路径上提交的数量大(100+),我想他们压扁所有。

有没有办法只在保留master行上的那些功能分支时压扁提交?

+0

你还想要的结果有一个承诺的特性分支,并与主合并,还是要掌握上要应用所有的工作没有分支? – Nayuki

+0

我认为第一个(如果我理解正确的话)。基本上在上面的图中,C和D应该被压缩成一个提交,并且应该保留从'master'(A,B)提交的提交。这样我就可以将C-> D-> E直接合并到这个分支的'master'中。再次感谢! – user2490003

+0

另一个问题 - 你的功能分支上的历史是完全线性的,还是有传入或传出的合并? – Nayuki

回答

3

是的,你可以。所以,你要打开你的问题提交图表到这个新图:

* E (HEAD) merging master into feature 
|\ 
| * D feature commit (squashes 1 and 2) 
* | B master commit 2 
|/ 
* A master commit 1 

的过程:

  1. 确保你的工作树是干净的。没有未提交的更改,没有阶段性更改,没有未跟踪的文件。
  2. 确保您位于功能分支上。
  3. git reset --hard *Hash of D on feature branch*
  4. git reset --soft *Hash of A on master*
  5. git commit与你想要的信息。
  6. git merge master
+0

不要忘记在#4之后阶段更改#4 –

+2

@CodyStott分期已经暗示软复位,尽管 – Nayuki

+1

啊好点,我以前从来没有使用'soft'选项。很高兴知道。 –