git - 如何只为一个分支获取提交历史记录?

让我说我从master创建了一个新的分支my_experiment并做了几次提交到my_experiment。如果我在my_experiments上执行git log,我看到对此分支的提交,但是在my_experiments分支之前提交到my_experiments的提交 创建了。

我会发现查看my_experiments分支的所有提交的历史记录非常有用,直到它触及该分支的创建 - 实际上是该分支的真实历史。 否则,在通过日志查看提交是否在my_experiments分支上时,我不清楚。

有没有办法用Git做到这一点?

Marplesoft asked 2019-08-13T09:13:57Z
5个解决方案
102 votes

您可以使用范围来执行此操作。

git log master..

如果您已经签出了my_experiment分支机构。 这将比较master的位置HEADmy_experiment的小费)。

alex answered 2019-08-13T09:14:20Z
6 votes

git merge-base命令可用于查找共同的祖先。 因此,如果my_experiment尚未合并到master中并且my_experiment是从master创建的,那么您可以:

git log --oneline `git merge-base my_experiment master`..my_experiment
cforbish answered 2019-08-13T09:14:47Z
3 votes

注意:如果您将该日志限制为最后一次提交(例如,最后3次提交,例如git log -3),请确保在' n'之间添加空格。 和你的分支:

git log -3 master..

在Git 2。1(2014年8月)之前,这个错误:strtol_i()实际上会显示当前分支的最后3个提交(这里是atoi()),忽略master限制(意味着如果my_experiment只包含一个提交,则仍然会列出3个,2个 他们来自master

请参阅Junio C Hamano的提交e3fa568(strtol_i()):

修订版:解析" strtol_i()" 更仔细

这个错误的命令行只是忽略了" strtol_i()" 并最终显示当前atoi()的两个提交:

$ git log -2master

因为我们饲料" strtol_i()" 到atoi(),而不确保整个字符串被解析为整数。

请改用strtol_i()辅助功能。

VonC answered 2019-08-13T09:15:58Z
1 votes

我认为您的选项是git log --oneline --decorate.这可以让您知道已检查的提交,以及您在故事情节中的每个分支的最高提交。 通过这样做,您可以很好地了解repo的结构以及与特定分支关联的提交。 我认为阅读这个可能有所帮助。

Daniel Casas answered 2019-08-13T09:16:27Z
0 votes

您只能使用git log --oneline

Manoj Rana answered 2019-08-13T09:16:56Z
translate from https://stackoverflow.com:/questions/16974204/how-to-get-commit-history-for-just-one-branch