0

这可能是一个重复的问题,但我没有找到确切的答案。

假设我有 2 个分支 br1 和 br2,每个分支 3 个提交。

br1

  • 提交一个
  • 提交 b
  • 提交 c

br2

  • 提交
  • 提交
  • 提交 f

当我从 br2 合并到 br1 时,git log on br1 show 提交 a、b、c、d、e、f。

假设我有 2 个分支 br1 和 br2,每个分支 3 个提交。

与 br2 合并后的 br1

  • 提交一个
  • 提交 b
  • 提交 c
  • 提交
  • 提交
  • 提交 f

有没有办法过滤仅在 br1 上创建的提交?(我试过 git log br1..br2 但还有其他方法吗?)

如果合并是 Fast-forward 或 Automerge,GIT 会记录合并的任何提交吗?(我在发生冲突时看到提交,但在自动合并中没有看到)

4

3 回答 3

1

分支只是指向特定提交的指针。所以你无法找出某个提交来自哪个分支。

在进行快进的时候,唯一改变的是某个分支指向的提交被切换,所以不会记录额外的提交。如果您确实想要记录额外的提交,请使用git merge --no-ff.

于 2011-05-06T11:55:25.297 回答
0

问题git log br1..br2在于它会尝试抑制属于 br1 的提交,但现在所有的提交都是 br1 的一部分,所以什么都不会显示。

您可以做的是在 br2 合并之前找到提交;git log br1^..br2,但这只有在 br1 没有向前移动时才有效。

一般来说,最好的方法是找出相关的合并,并显示合并的提交:

git log merge^1..merge^2
于 2012-05-30T17:21:55.087 回答
0

我不确定为什么知道这一点很重要,但如果是,那么您可以从 br1 创建一个新分支并使用该分支来合并 br2。那么 br1 和 br2 不变,你可以分辨出哪一个包含了哪些更改,同时你也有一个包含两组更改的合并分支。

br1

  • 一个
  • b
  • C

br2

  • d
  • e
  • F

mbr1_2

  • 一个
  • b
  • C
  • d
  • e
  • F
于 2011-05-06T13:02:35.043 回答