摆脱主题/功能分支上的无关合并提交

时间:2018-10-10 23:52:12

标签: git git-merge

假设我们创建了一个主题/功能分支,并且我们正在处理一个星期。为了与集成分支保持最新,我们可以使用git rebase,但是出于问题的考虑,让我们使用git merge。因此,我们在功能分支中创建了合并提交-随便将集成分支合并到功能分支中。

我相信这些合并提交基本上在一天结束时都是无用的噪音。完成功能后,将功能分支合并到集成分支时,是否有消除这些合并提交的好方法?我认为将分支压缩为一次提交是一种方法吗?

3 个答案:

答案 0 :(得分:2)

是的,如果您合并并且不重新设置基础,那么压缩是“删除”合并提交的方法。

我并不总是这样做,尤其是当功能很大并且合并需要解决冲突时。

答案 1 :(得分:2)

  

我相信这些合并提交基本上在一天结束时都是无用的噪音。是否有摆脱这些合并提交的好方法

告诉git您正在跟踪的分支,您的命令是简单的git rebase

例如,使wizzo跟踪开发人员git branch -t wizzo dev,在开发人员上进行一些工作,在wizzo上进行一些工作,合并,在这两者上进行更多的工作,您会得到像这样的东西:

* f7b551f (dev) 4dev
| * 982b0c7 (HEAD -> wizzo) 3wiz
| *   5de6750 Merge branch 'dev' into wizzo
| |\  
| |/  
|/|   
* | 2e8c7ec 1dev
| * a320e00 2wiz
|/  
* c823194 Init

git rebase之后:

* 096cbfc (HEAD -> wizzo) 3wiz
* 8e5d6c5 2wiz
* f7b551f (dev) 4dev
* 2e8c7ec 1dev
* c823194 Init

git rerere旨在使此工作流程尽可能轻松,它记住了如何解决合并冲突,因此当您最终从一个月后开始像这样重新建立基础时,即使您不记得自己做了什么, Git确实如此。

答案 2 :(得分:1)

Tymtam是正确的,但是如果您想手动操作,可以这样做:

git checkout a

git merge b

git reset --soft origin/a

git add -A

git commit -m "Single commit all changes"