假设我从master
创建了一个新的分支my_experiment
,并向my_experiment
进行了几次提交。如果我在my_experiment
上执行git log
,我会看到向该分支进行的提交,也会看到在my_experiments
分支创建之前向master
进行的提交。
我发现查看my_experiments
分支的所有提交的历史记录非常有用,直到它命中该分支的创建--实际上是该分支的真实历史记录。否则,当我查看日志时,我不清楚提交是否在my_experiments
分支上。
有没有办法用Git做到这一点?
6条答案
按热度按时间ubof19bj1#
您可以使用范围来执行此操作。
如果你已经 checkout 了你的
my_experiment
分支,这将比较master
所在的位置和HEAD
(my_experiment
的顶端)。gfttwv5a2#
注意:如果你把日志限制为最后n次提交(比如最后3次提交,git log-3),确保在'n'和分支之间加一个空格:
在Git 2.1(2014年8月)之前,这个错误:
git log -3master..
实际上会显示当前分支的最后3个提交(这里是my_experiment
),忽略master
限制(意味着如果my_experiment
只包含一个提交,仍然会列出3个,其中2个来自master
)请参阅Junio C Hamano (
gitster
)的commit e3fa568:修订版本:更仔细地解析“
git log -<count>
“这个输入错误的命令行只是忽略了“
master
“,最后显示了当前HEAD
的两个提交:因为我们将“
2master
“提供给atoi()
,而没有确保将整个字符串解析为整数。请改用
strtol_i()
辅助函数。kh212irz3#
git merge-base
命令可用于查找公共祖先。因此,如果my_experiment尚未合并到master中,并且my_experiment是从master创建的,则可以:nwlqm0z14#
我认为
git log --oneline --decorate
是一个适合你的选项。它让你知道你故事线中每个分支的检查提交和最高提交。通过这样做,你可以很好地了解你的repo的结构和与特定分支相关的提交。我认为阅读this可能会有所帮助。omtl5h9j5#
只能使用
git log --oneline
ttvkxqim6#
我知道现在已经很晚了......但这里有一个(不那么简单)的一行得到你正在寻找的:
git show-branch
(向/dev/null
发送警告)。grep -E "\[$BRANCH_NAME"
的分支。$BRANCH_NAME
是通过git branch | grep -E '^\*' | awk '{ printf $2 }'
获得的(带有星星的分支,没有星号的分支)。tail -n+2
。[$BRANCH_NAME]
前面的所有内容删除为sed -E "s/^[^\[]*?\[/[/"
,从而清理输出。