我正在尝试基于 git log 构建历史报告。但我想跳过除 master 之外的分支,即使它们已合并。例如,我创建了使用功能 X 的分支。这个分支中有很多小提交,我不喜欢在报告中看到这些小步骤。但是当我将这个分支合并到 master 并带有消息“功能 X 已实现”时,我希望在报告中看到这个里程碑。感谢您帮助 git 新手。
问问题
535 次
2 回答
3
如果你想合并一个分支而不合并该分支的整个提交历史,你可以使用--squash
命令 to merge
. 这会将来自该分支的所有更改应用到您的工作目录,而无需实际创建任何提交;此时,您可以为整个历史生成单个提交。因此,如果您的 master
分支如下所示:
commit 69b2303df9884627ade245fff4a3376f39646cbd
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:24:56 2012 -0400
commit on master
commit c8496d9ac4048a414faffb91486075ab0952e2d7
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:24:43 2012 -0400
initial commit
newbranch
另一个看起来像这样的分支:
commit 71587063a73368ea160a78cd6d130f828cb05e0e
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:25:36 2012 -0400
commit 3 on new branch
commit 37ab4fc91c796ed05ecae0c8f504f263cee9603d
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:25:36 2012 -0400
commit 2 on new branch
commit 5fd0768e355d1cba0905aaed327fb20ef263d6ef
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:25:36 2012 -0400
commit 1 on new branch
commit 69b2303df9884627ade245fff4a3376f39646cbd
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:24:56 2012 -0400
commit on master
commit c8496d9ac4048a414faffb91486075ab0952e2d7
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:24:43 2012 -0400
initial commit
然后你可以这样做:
git checkout master
git merge --squash newbranch
git commit -m "merged changes from newbranch"
然后分支的日志master
将如下所示:
commit 0737d3dac5f769f837d4d0ce90ba1004c79d6a92
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:26:29 2012 -0400
merged newbranch into master
commit 69b2303df9884627ade245fff4a3376f39646cbd
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:24:56 2012 -0400
commit on master
commit c8496d9ac4048a414faffb91486075ab0952e2d7
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Mon May 14 13:24:43 2012 -0400
initial commit
于 2012-05-14T17:29:42.513 回答
1
如果我理解正确,您正在寻找的本质上是一个合并到 master 的列表。
如果这是正确的,那么我相信这将起作用:
git checkout master
git log --merges
于 2012-05-14T17:26:07.510 回答