假设我从my_experiment
创建了一个新分支master
,并对my_experiment
进行了多次提交。如果我在git log
上执行my_experiment
,我会看到对此分支的提交,以及在创建master
分支之前对my_experiments
进行的提交。
我会发现查看my_experiments
分支的所有提交的历史记录非常有用,直到它到达该分支的创建 - 实际上是该分支的真实历史。否则,在查看日志时,我不清楚提交是否在my_experiments
分支上。
有没有办法用Git做到这一点?
答案 0 :(得分:105)
答案 1 :(得分:6)
git merge-base
命令可用于查找共同的祖先。因此,如果my_experiment尚未合并到master中,而my_experiment是从master创建的,那么你可以:
git log --oneline `git merge-base my_experiment master`..my_experiment
答案 2 :(得分:3)
注意:如果您将该日志限制为最后一次提交(例如,最后3次提交,例如git log -3),请确保在' n'之间添加空格。和你的分支:
git log -3 master..
在Git 2。1(2014年8月)之前,这个错误:git log -3master..
实际上会显示当前分支的最后3次提交(此处为my_experiment
),忽略master
限制(含义)如果my_experiment
只包含一个提交,则仍会列出3个,其中2个来自master
)
commit e3fa568见Junio C Hamano (gitster
):
git log -<count>
&#34;更仔细这个错误的命令行只是忽略了&#34;
master
&#34;并最终显示当前HEAD
的两个提交:
$ git log -2master
因为我们提供了#34;
2master
&#34;到atoi()
而不确保将整个字符串解析为整数。改为使用
strtol_i()
辅助函数。
答案 3 :(得分:1)
我认为您的选择是git log --oneline --decorate
。这可以让您知道已检查的提交以及故事线中每个分支的最高提交。通过这样做,您可以很好地了解repo的结构以及与特定分支关联的提交。我认为阅读this可能有所帮助。
答案 4 :(得分:0)
您只能使用git log --oneline
答案 5 :(得分:0)
我知道这已经很晚了……但是这里是一个(不是那么简单)的单人间,可以得到您想要的东西:
git show-branch --all 2>/dev/null | grep -E "\[$(git branch | grep -E '^\*' | awk '{ printf $2 }')" | tail -n+2 | sed -E "s/^[^\[]*?\[/[/"
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/^[^\[]*?\[/[/"
之前的所有内容来清理输出。