Git 获取自拆分父分支(包括父分支)以来的提交日志';她最近的承诺

Git 获取自拆分父分支(包括父分支)以来的提交日志';她最近的承诺,git,Git,我正在尝试创建一个快速bash函数,该函数返回自当前分支从其父分支出来以来每次提交的--oneline日志,并包括前一次提交的行。这是我到目前为止所拥有的 #从另一个堆栈溢出问题中被盗 __git_uuuget_parent_branch(){ echo$(git显示分支2>/dev/null| sed“s/].//”| 格雷普“\*”| grep-v“$(git rev parse--abbrev ref HEAD)”| 头部-n1| sed“s/^.*\[/”| sed“s/[\^\~].$

我正在尝试创建一个快速bash函数,该函数返回自当前分支从其父分支出来以来每次提交的
--oneline
日志,并包括前一次提交的行。这是我到目前为止所拥有的

#从另一个堆栈溢出问题中被盗
__git_uuuget_parent_branch(){
echo$(git显示分支2>/dev/null|
sed“s/].//”|
格雷普“\*”|
grep-v“$(git rev parse--abbrev ref HEAD)”|
头部-n1|
sed“s/^.*\[/”|
sed“s/[\^\~].$/”)
}
lp(){
如果[[$(git rev parse--abbrev ref HEAD)=master]];那么
echo已在主分支上。
返回1
fi
本地提交=“$(git日志--oneline$(git合并基$(\uu git\uu get\u parent\u branch)头)…头)”
[[-z$commits]]&&1>&2回显自$(git_uuget_parent_分支)以来没有任何提交。| |回显-e“$commits”
}
这可以正确地获取父级提交后的每个提交。我原以为可以将
^
~1
附加到
git merge base
结果中:

local commits=“$(git log--oneline$(git merge base$(\uu git\uu get\u parent\u branch)HEAD)^..HEAD)”
#或
本地提交=“$(git日志--oneline$(git合并基$(\uu git\uu get\u parent\u branch)HEAD)~1..HEAD)”
但是,如果分支SHA属于合并,则这似乎不起作用。由于我的大多数分支都不属于
主分支
,因此情况总是如此。它不显示合并SHA,而是显示自该合并的第一次提交以来的每个条目。如果合并包含两次提交,我会看到我想要看到的行,以及我想要看到的另外两行我不想要

我认为这个问题的症结在于
^
~1
没有完全按照我的意愿去做

(我还发现,如果我实现了这一点,我的
[[-z$commits]]
将无法工作,但这是我以后可以解决的问题。)

编辑:也许最简单的解决方案就是直接检索并附加行

localparent=“$(\uuuu git\uuu get\u parent\u branch)”
本地提交=“$(git日志--oneline$(git合并基$parent HEAD)…HEAD)
$(git日志--单线-1$parent)

您需要的是
^@
,这是“提交的所有父项”的语法