我有一个'主'分支和几个主题分支。假设主分支主要用作发布候选者,并且在该分支上不进行任何开发工作。
主题分支是多个,由团队共享。一些分支机构有多个开发人员在开发它们。所有主题分支都定期从主分支重新定位。
为了清理'master'分支中的历史记录,我在将主题代码合并到主分支时进行了'git merge --squash'。这完全没问题。
现在 - 当主题分支被重新定位时 - 提交正在重复。有没有办法在'git merge --squash'成功后清理主题分支上的提交?
答案 0 :(得分:8)
让我们假设您有以下情况:
A - B - C (master)
\
D - E (topic)
如果您使用--squash将主题合并到master中,您将获得类似
的内容A - B - C - F (master)
\
D - E (topic)
其中F包含来自D和E的所有更改。由于主题分支已在主数据库(通过F),因此主数据库上的重新定位主题没有意义。您可以将主题分支移动到F,例如
,而不是重新定位git checkout master
git branch -f topic F
哪个收益率:
A - B - C - F (master/topic)
现在您需要做的就是推动移动的主题分支:
git push -f origin topic
答案 1 :(得分:3)
我曾经和Magnus做过同样的事情,只需要几个命令:
git checkout master
git merge --squash topic
git commit -m "Add topic feature"
git branch -D topic
git checkout -b topic
git push -f origin topic