【问题标题】:Clean master branch but also detailed record of intermediary commits清理主分支,但也详细记录中间提交
【发布时间】:2017-11-10 03:43:01
【问题描述】:

目标:保持master的干净历史,同时保持中间提交。

例如,让我们从一个主分支开始:

M1 --- M2 --- M3
              ^                  
              master

我在新分支上处理功能/错误/任何内容:

M1 --- M2 --- M3
              ^  \
              |   \- F1 --- F2 -- F3
              |                   ^
              master              feature

当我合并到 master 时,我希望 M3 成为父级,但也要保持从 M3 到新提交的“迭代”。这可以通过merge --no-ff 来完成:

M1 --- M2 --- M3 ----------------------- M4
                 \                    /  ^
                  \- F1 --- F2 -- F3-/   master
                                  ^
                                 feature

这几乎就是我的想法。我遇到的问题是,对于 git,据我所知,M3F3 都是 M4 的“平等”父母,现在都是分支 master 的一部分。

我想要的是能够显示(使用git log)没有功能分支(F1-F3)的主分支,以便对分支有更清晰的视图。理想情况下,这将是默认设置。但也可以显示 F1 F3 提交,以便在需要时查看更“详细”的历史记录。

有没有办法在git中拥有这个或接近这个的东西?

【问题讨论】:

  • 正如 Alejandro C. 所说,使用 --first-parent 仅关注第一个父链接。请注意,这在合并时需要一些纪律(您已经注意到的--no-ff,并避免使用典型的git pull,因为它使其他人的提交看起来像作为第二父级合并的功能分支)。

标签: git branch git-merge git-log


【解决方案1】:

怎么样

git log --first-parent master

引用手册

在看到合并提交时仅关注第一个父提交。在查看特定主题分支的演变时,此选项可以提供更好的概览,因为合并到主题分支往往只是不时调整到更新的上游,并且此选项允许您忽略引入的单个提交通过这样的合并你的历史。

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    相关资源
    最近更新 更多