Git 壁球合并后重定基调?

Git 壁球合并后重定基调?,git,git-rebase,Git,Git Rebase,我有一个“大师”分支和几个主题分支。假设主分支主要用作发布候选,并且没有在该分支上进行开发工作 主题分支有几个,由团队共享。一些分支有多个开发人员在处理它们。所有主题分支都定期从主分支重新设置基础 为了清理“master”分支中的历史记录,我在将代码从主题合并到主分支时执行了“git merge--squash”。这工作做得非常好 现在,当主题分支被重定基础时,提交将被复制。“git merge--squash”成功后,有没有办法清理主题分支上的提交?假设您有以下场景: A - B - C (m

我有一个“大师”分支和几个主题分支。假设主分支主要用作发布候选,并且没有在该分支上进行开发工作

主题分支有几个,由团队共享。一些分支有多个开发人员在处理它们。所有主题分支都定期从主分支重新设置基础

为了清理“master”分支中的历史记录,我在将代码从主题合并到主分支时执行了“git merge--squash”。这工作做得非常好


现在,当主题分支被重定基础时,提交将被复制。“git merge--squash”成功后,有没有办法清理主题分支上的提交?

假设您有以下场景:

A - B - C (master)
 \
  D - E (topic)
如果您将主题与--squash合并到master中,您将得到如下结果

A - B - C - F (master)
 \
  D - E (topic)
其中F包含来自D和E的所有更改。在master上重新设置主题没有意义,因为主题分支已经在master中(通过F)。您可以将主题分支移到F,而不是重定基址,例如

git checkout master
git branch -f topic F
这将产生:

A - B - C - F (master/topic)
现在只需向上推移动的主题分支:

git push -f origin topic

我以前和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

谢谢这正是我所需要的。小心使用squash-F可能包含您在主题分支中删除的文件,请看它在以下情况下不会完全正常工作。也许不是去的路-看