【问题标题】:merge without merged branch commits history sourcetree合并不合并分支提交历史源树
【发布时间】:2014-06-30 18:35:10
【问题描述】:

我需要在 SourceTree 中将功能分支合并到我的主分支中。

每次合并特性分支时,我都会在主分支提交历史中看到所有特性分支的提交历史。

我想将功能分支合并到我的主分支和主分支中,以查看仅添加了一个提交,即“与分支名称合并”提交,它列出了更改的文件。

我在智能 git 中有这个选项,可以在 SourceTree 中完成吗?怎么样?

  • 答:在 master 分支中完成提交
  • B,C:在 test_branch 分支上完成的提交,显示在主提交历史中(这些是我想从我的主历史中删除的)
  • D:合并提交(我想保留这个)

【问题讨论】:

  • ST目前不支持无提交历史的简单合并。
  • 不确定如何在 SourceTree 中执行(从未使用过),或者是否有可能,但听起来你想要git merge --squash...

标签: git merge commit atlassian-sourcetree


【解决方案1】:

这意味着合并是一个fast-forward:它只是将主 HEAD 移动到功能分支 HEAD。

博文“Merge or Rebase?”(2012 年 8 月)提到:

您可以在 SourceTree 中关闭快进合并,以便在需要时始终创建合并提交 - 检查 Merge 对话框中的“Create a commit”选项或在 Preferences > Git 中全局设置它。]

注意:如果您将 git-flow 与 SourceTree 一起使用,那么如果可以进行快进,则合并总是是快进的:请参阅 this thread

OP 添加的屏幕截图显示了一个非快进合并,其中:

  • 主历史记录中的合并提交
  • 在功能分支中完成的提交

所以A-Dmaster 中,而B-C 留在feature 分支中:您不必从master 历史记录中“删除”B-C
current branch (master) 只有A-Dfeature 提交仅作为上下文可见,以解释合并提交 D 的来源。


注意:这个(合并提交)在 GitHub 中以 both 父级表示,这意味着包括合并分支的最新提交:它是 GitHub 的“功能”,不是准确的表示master 的历史记录。

例如查看commits in the master branch of the Git repo itself:每个合并提交之后都会有一个来自合并分支的提交。

在第二个屏幕截图的情况下,GitHub 显示来自合并分支的提交,但这些提交不是 master 历史记录的一部分(git log master 不会列出它们)。
这是来自 GitHub 的功能,而不是 master 日志的精确视图。

注意之二:这些合并的提交由 GitHub 根据其日期显示。
如果它们是最近的,您会在合并提交下看到它们,如果它们较旧,您会在 master 分支的提交历史列表中看到它们。


OP Asaf Maoz 加了in the comments

当我使用智能 git 时,我有一个合并分支的选项,并且在我的主分支中只看到一个提交(类似于您的链接中的那些) - 合并的提交,

ST 似乎尚不支持此功能(请参阅the ST forum)。
甚至还没有显示当前分支的名称 (SRCTREE-1925)

我的 github 账号没有改任何东西,所以肯定是在 ST。可能ST中没有这个选项

是的:每个工具都选择了 git log 的图形显示。

【讨论】:

  • 我关闭了快进合并,我得到了'merged with branchName'提交,但我也看到了合并的分支提交历史——我不需要。我希望我的主分支只有“与分支名称合并”提交
  • @AsafMaoz 你能添加你看到的截图吗?
  • tnx 的帮助。我添加了ST的屏幕截图
  • 当我将 master 推送到 github 时,我看到 B-C 作为我的 master 分支提交历史上的提交
  • @AsafMaoz 你能告诉我那个 GitHub repo 的 url 是什么吗?
猜你喜欢
  • 2015-04-17
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 2020-08-28
  • 2020-05-12
  • 2023-03-28
  • 2016-01-11
相关资源
最近更新 更多