在GIT中查找特定分支中的所有提交

时间:2011-05-06 11:51:19

标签: git-branch git-merge git-commit fast-forward automerge

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

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

BR1

  • 提交
  • commit b
  • commit c

BR2

  • commit d
  • commit e
  • commit f

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

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

与br2合并后

br1

  • 提交
  • commit b
  • commit c
  • commit d
  • commit e
  • commit f

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

如果合并是Fast-forward或Automerge,GIT会记录合并的任何提交吗? (我发现在发生冲突时提交但不在automerge中提交)

3 个答案:

答案 0 :(得分:1)

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

当进行快进时,唯一改变的是切换某个分支指向的提交,因此不会记录额外的提交。如果您确实需要记录额外的提交,请使用git merge --no-ff

答案 1 :(得分:0)

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

<强> BR1

  • 一个
  • B'/ LI>
  • C

<强> BR2

  • d
  • ë
  • ˚F

<强> mbr1_2

  • 一个
  • B'/ LI>
  • C
  • d
  • ë
  • ˚F

答案 2 :(得分:0)

git log br1..br2的问题在于它会尝试抑制作为br1一部分的提交的提交,但是所有提交现在都是br1的一部分,因此不会显示任何内容。

你可以做的是在br2合并之前找到提交; git log br1^..br2,但这只有在br1没有前进的情况下才有效。

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

git log merge^1..merge^2