6

我在一个分支中有多个提交。当我推送这些提交进行代码审查时,我们的代码审查工具会为每个提交创建一个审查。

为了避免这种情况,我想将多个提交合并到一个提交中。同时我不想丢失提交的历史。是否可以创建一个仅用于审核的新分支并将我的主分支中的所有提交合并到我的审核分支中的单个提交中?我该怎么做呢?

4

2 回答 2

6

我不知道你的评论工具,但这可能有用

git checkout review
git merge --squash master

http://www.kernel.org/pub/software/scm/git/docs/git-merge.html

于 2011-05-31T09:55:15.060 回答
6

不想这样做。在你如何提交的意义上的实际历史是毫无价值的。适当大小的审查块很有趣,因此只需rebase -i您的工作分支将提交组合到可管理大小且最重要的逻辑块,发布它们以审查并忘记原始历史。

也就是说,要合并提交,您可以使用:

git merge --squash

Git 不会丢弃历史。它实际上并没有这样做rebase,但在这种情况下,历史的先前版本只能通过“reflog”访问,并且只有当你的 reflog 过期(IIRC 默认为 90 天)时,它最终将变得无法访问并且git gc会把它扔掉。但是使用壁球,原始分支仍然存在,您仍然可以从 reflog 中命名修订。

但是,审查过的历史记录将通过审查工具合并到中央母版,没有人会看到您的原始历史记录。你可以保留它,但它不会与官方相关,而且无论如何也没有人会看到它。

于 2011-05-31T10:03:00.107 回答