如何获得只有一个分支的提交历史?
假设我从master
创build了一个新的分支my_experiment
,并向my_experiment
提交了多个提交。 如果我在my_experiment
上做了一个git log
,我看到了对这个分支的提交,还有在my_experiments
分支创build之前提交的提交。
我会发现查看所有提交到my_experiments
分支的历史logging是非常有用的,直到它创build该分支 – 实际上是该分支的真实历史。 否则,当我查看日志时,我不清楚提交是否在my_experiments
分支上。
有没有办法与Git做到这一点?
你可以使用一个范围来做到这一点。
git log master..
如果你已经检出你的my_experiment
分支。 这将比较master
在哪里头( my_experiment
尖端)。
git merge-base
命令可以用来find一个共同的祖先。 因此,如果my_experiment尚未合并到master中,而my_experiment是从master创build的,则可以:
git log --oneline `git merge-base my_experiment master`..my_experiment
注意:如果你将这个日志限制在最后n个提交(最后3个提交例如git log -3),请确保在'n'和你的分支之间放置一个空格:
git log -3 master..
在Git 2.1之前(2014年8月),这个错误: git log -3master..
实际上会显示当前分支的最后3个提交(这里是my_experiment
),忽略master
限制(意思是如果my_experiment
只包含一个提交,被列出,其中2人来自master
)
见Junio C gitster
( gitster
)的 提交e3fa568 :
修改:更仔细地parsing“ git log -<count>
”
这个错误的命令行简单地忽略了“
master
”,并最终显示来自当前HEAD
两个提交:
$ git log -2master
因为我们将“
2master
”提供给atoi()
而没有确保将整个stringparsing为整数。改用
strtol_i()
辅助函数。
我认为你的目的是git log --oneline --decorate
。 这可以让你知道检查的提交,以及你在故事线上的每个分支的最高提交。 通过这样做,您可以对repo的结构和与特定分支关联的提交有一个很好的看法。 我想读这可能会有所帮助。