2

我正在尝试基于 git log 构建历史报告。但我想跳过除 master 之外的分支,即使它们已合并。例如,我创建了使用功能 X 的分支。这个分支中有很多小提交,我不喜欢在报告中看到这些小步骤。但是当我将这个分支合并到 master 并带有消息“功能 X 已实现”时,我希望在报告中看到这个里程碑。感谢您帮助 git 新手。

4

2 回答 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 回答