Git 是否';吉特壁球';(推后)重写历史?

Git 是否';吉特壁球';(推后)重写历史?,git,version-control,merge,squash,git-rewrite-history,Git,Version Control,Merge,Squash,Git Rewrite History,我正在为一个特性开发一个单独的分支 现在,我希望在我的主分支中使用此功能,但只需将所有提交压缩为一个提交(在提交消息中进行重述) 问题是我已经将分支推到远程。 因此,我不确定是否可以执行git合并-挤压功能(来自主分支),或者是否可以重写我的git历史 我不知道如果git merge--squash只会创建一个新的提交(作为补丁,包含我合并的分支的所有更改。以安全的方式),或者如果它会从我的分支中删除旧的提交,或者只对git历史进行任何更改。(我希望避免这种情况,因为我在团队中工作) 我是否应该

我正在为一个特性开发一个单独的分支

现在,我希望在我的主分支中使用此功能,但只需将所有提交压缩为一个提交(在提交消息中进行重述)

问题是我已经
将分支推到
远程
。
因此,我不确定是否可以执行
git合并-挤压功能(来自主分支),或者是否可以重写我的git历史

我不知道如果
git merge--squash
只会创建一个新的提交(作为补丁,包含我合并的分支的所有更改。以安全的方式),或者如果它会从我的分支中删除旧的提交,或者只对git历史进行任何更改。(我希望避免这种情况,因为我在团队中工作)

我是否应该选择
提交范围cherry pick
,而不是
git squash
?(但cherry pick只会复制所有提交,而不会挤压它们)

或者和壁球合并就可以了?(即使在推送到远程功能分支后)


我想在我的主分支中集成我的功能分支,作为一个单一的提交(可能有我通过
--squash
获得的所有提交消息),但不重写历史。不重写历史。在高级命令中,只有
git-rebase
git-commit--amend
执行历史重写

git merge--squash
只需准备一个工作树,其中包含来自要合并的分支的所有信息,正如文档所述:

生成工作树和索引状态,就像发生了真正的合并一样(合并信息除外),但不要实际进行提交或移动头,也不要记录$GIT_DIR/merge_HEAD以使下一个GIT commit命令创建合并提交。这允许您在当前分支上创建一个提交,其效果与合并另一个分支相同(如果是八达通,则为多个分支)