Git:如何查看在现在合并的分支上完成的工作

Git:如何查看在现在合并的分支上完成的工作,git,Git,我们即将从svn迁移到git,我的一个用户有一个问题。我们有许多长期存在的发布分支。它们定期地被标记(rel_foo_10)并合并回主节点。我们需要能够列出在发布分支上进行的所有提交。执行git log master..rel_foo_10(显示可从rel_foo_10访问但不能从master访问的所有提交)不起作用,因为在合并之后,所有提交都可从master的提示访问。这在git中可能吗 一个想法是找到最古老的分支点并进行git log branchpoint..rel_foo_10。那容易吗

我们即将从svn迁移到git,我的一个用户有一个问题。我们有许多长期存在的发布分支。它们定期地被标记(rel_foo_10)并合并回主节点。我们需要能够列出在发布分支上进行的所有提交。执行git log master..rel_foo_10(显示可从rel_foo_10访问但不能从master访问的所有提交)不起作用,因为在合并之后,所有提交都可从master的提示访问。这在git中可能吗

一个想法是找到最古老的分支点并进行git log branchpoint..rel_foo_10。那容易吗?(git merge base似乎没有这样做,因为它找到了最新的共同祖先,而我想要最早的)


或者git show branch呢?从手册页上看,我不清楚该命令如何知道何时停止。

上次我检查时,git并没有直接处理这个问题。我也有同样的需求:我希望我的实时站点更新脚本将所有合并的更改通过电子邮件发送给每个人。我没有找到任何工具可以让我轻松解析回购历史记录,告诉我分支何时开始不同。换句话说,我无法通过编程找到最早的共同祖先

这就是我提出的解决方案:在合并之前只需在master上创建一个分支。如果您愿意,该分支机构可能是永久性的,或者在我的情况下,它是临时性的:

git branch temp
现在,当您合并时,您有一个合并开始位置的参考:

git merge rel_foo_10
git log temp..HEAD

一旦我将日志保存到文件中,我就可以删除临时分支。如果你计划将预合并分支永久化,那么也许你可以使用一些约定来命名它,例如
pre\u rel\u foo\u 10

到目前为止,我在网上任何地方看到的最佳解决方案是这个(实际上,这是从我找到的分支修改而来的,使用--date order,这是正确排序边界提交所必需的):


这是在git中获得(最古老的)分支库的最佳/唯一方法吗?

我不认为这是我想要的。我希望看到分支上的所有更改,即使它被合并到主干上好几次。我不只是想看到组成单个合并的更改(尽管这也是一个好主意!),我想我们可以在启动分支时创建一个标记,并将其用作分支的左侧。。操作人员看起来git应该能告诉我这一点。难道使用gitk这样的工具不让这个问题很容易解决吗?
base=`git rev-list --boundary release_branch...master --date-order | \
   grep '^-' | tail -1 | cut -c2-`
git log $base..release_branch