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

发布于 2024-11-05 14:52:54 字数 640 浏览 5 评论 0原文

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

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

br1

  • 提交 a
  • 提交 b
  • 提交 c

br2

  • 提交 d
  • 提交 e
  • 提交 f

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

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

br1 与 br2 合并后

  • commit a
  • commit b
  • commit c
  • commit d
  • commit e
  • commit f

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

如果合并是快进或自动合并,GIT 会记录合并的任何提交吗? (我在存在冲突时看到提交,但在自动合并中则没有)

This might be a repeated question but i didn't find exact answers.

Lets say i have 2 branches br1 and br2 with 3 commits each.

br1

  • commit a
  • commit b
  • commit c

br2

  • commit d
  • commit e
  • commit f

When i merge from br2 to br1, git log on br1 show commits a,b,c,d,e,f.

Lets say i have 2 branches br1 and br2 with 3 commits each.

br1 after merge with br2

  • commit a
  • commit b
  • commit c
  • commit d
  • commit e
  • commit f

Is there a way to filter commits that were created on br1 alone? (I have tried git log br1..br2 but is there any other method?)

If the merge was Fast-forward or Automerge, will GIT record any commit for the merge? (i see commit when there is a conflict but not in an automerge)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冷清清 2024-11-12 14:52:54

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

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

A branch is just a pointer to a specific commit. So you can't find out from what branch a certain commit came from.

When doing a fast-forward, the only thing that changes is that the commit a certain branch points to is switched, so no extra commit will be recorded. If you do want an extra commit to be recorded, use git merge --no-ff.

倾城月光淡如水﹏ 2024-11-12 14:52:54

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

br1

  • a
  • b
  • c

br2

  • d
  • e
  • f

mbr1_2

  • a
  • b
  • c
  • d
  • e
  • f

I'm not certain why this is important to know, but if it is, then you could create a new branch from br1 and use that branch to merge br2. Then br1 and br2 are unchanged, and you can tell which one includes which changes, while you also have a merge branch containing both sets of changes.

br1

  • a
  • b
  • c

br2

  • d
  • e
  • f

mbr1_2

  • a
  • b
  • c
  • d
  • e
  • f
他夏了夏天 2024-11-12 14:52:54

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

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

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

git log merge^1..merge^2

The problem with git log br1..br2 is that it will try to suppress the commits the commits that are part of br1, but all the commits are part of br1 now, so nothing will show.

What you can do is find the commit right before the merge of br2; git log br1^..br2, but that would only work only if br1 has not moved forward.

In general the best way is to find out the relevant merge, and show the commits that were merged:

git log merge^1..merge^2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文