我正在为功能开发一个单独的分支。
现在我想在 main 分支中使用此功能,但只需将所有提交压缩为单个提交(回顾提交消息)。
问题是我已经push
将分支编辑为remote
。
所以我不确定我是否可以执行git merge --squash feature
(来自主分支)或如果可以重写我的git历史记录。
如果git merge --squash
只会创建一个新提交(包含作为补丁的合并分支的所有更改,我不会得到。所以以安全的方式),或者如果它将从我的分支中删除旧提交或只是对git历史记录进行任何更改。 (我希望避免这种情况,因为我在团队中工作)。
我应该选择commit-range cherry-pick
而不是git squash
吗? (但樱桃选择只会复制所有提交而不会压缩它们)
或者与壁球合并是好的? (即使在推送到远程功能分支后)
--squash
提供的所有提交消息) ,但没有重写历史。答案 0 :(得分:1)
不会重写历史记录。在高级命令中,只有git rebase
和git commit --amend
执行历史记录重写。
git merge --squash
只是准备一个工作树,其中包含您要合并的分支的所有信息,正如文档所述:
生成工作树和索引状态,好像发生了真正的合并(合并信息除外),但实际上没有提交或移动HEAD,也没记录$ GIT_DIR / MERGE_HEAD导致下一个git commit命令创建合并提交。这允许您在当前分支之上创建单个提交,其效果与合并另一个分支相同(或者在章鱼的情况下更多)。