在 git 中创建新分支时如何执行压缩?

How do I perform a squash while creating a new branch in git?

有什么方法可以在创建新分支之前压缩所有以前的提交。我想在 bitbucket 中有一个干净的提交页面,以便在创建新分支之前主分支上的所有内容都显示为只有 1 次提交。

我知道合并分支或推送分支时压缩的其他选项。我在 Whosebug 中找到了另一个答案,它告诉我如何在使用 "git rebase -i" 推送之前压缩你的提交,但我正在寻找一个选项来压缩新分支中的提交。

您可以在原地创建新分支,然后执行您的 rebase -i,最终您的旧分支将保持不变,而您的新分支将被压扁:

git checkout -b my_new_branch
git rebase -i

创建新分支时,根据要压缩的分支(新分支还是旧分支)检查或不检查...

你必须明白 git 总是创建新的提交,所以当你使用 rebase -i 压缩时,git 只是创建一个新的提交,压缩所有提交的内容。旧的不再可见,因为引用不是 "handled"。您保留参考(旧分支)的事实使您仍然可以看到它们。

请参阅 git-checkout 手册页中关于 --orphan 选项的说明。:

--orphan <new_branch>
       Create a new orphan branch, named <new_branch>, started from
       <start_point> and switch to it. The first commit made on this new
       branch will have no parents and it will be the root of a new
       history totally disconnected from all the other branches and
       commits.

这似乎是你想要做的,在这里。