我有一个master
分支机构,其他人会推动新员工和topic
分支我不时工作,我会做git merge master
,所以topic
的提交日志看起来像
commit01 topic: add feature01
commit02 Merge master to topic
commit03 topic: add feature02
commit04 Merge master to topic
commit05 topic: add feature03
commit06 topic: update feature04
commit07 Merge master to topic
然后我在topic
上完成了我的工作,并希望将其合并到master
,在合并之前,我想删除这些Merge master to topic
提交日志。
我该怎么做?
答案 0 :(得分:1)
每次将主分支更改同步到分支时,都应使用
git checkout master
git pull origin master
git checkout <your branch>
git rebase master
而不只是git merge master
注意:rebase会改变你的分支的提交历史记录,也许你应该强制推送到你的分支机构远程
当你完成你的分支时,你首先要修改master,然后git merge <your branch>
(没有--no-ff
合并)来掌握。
然后不会生成合并提交。
答案 1 :(得分:1)
当您将更改带入master时,可以执行squash merge,而不是删除合并提交。
这将在master上创建一个提交,可以有效地引入您进行常规合并时可能发生的所有更改。然后,无论你的主题历史有多复杂,在master上看起来都像是一次提交。
要做到这一点:
git checkout master
git merge --squash topic
git commit
这种方法有一些优点:
此方法的主要缺点是,如果多个人在同一个功能分支上工作,则只有一个人能够声明新的压缩提交。这意味着git blame
可能会将更改归因于错误的人。