当您在Github或Stash中发起Pull Request时,您会获得来自当前分支的提交列表。
获取组成当前分支的提交列表的git命令是什么,而不需要指定我们起始分支的名称?
获取组成当前分支的提交列表的git命令是什么,而不需要指定我们起始分支的名称?
git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")
或者更简单的方法,使用 git merge-base
(如果 HEAD 不在您的分支上,如此问题所示):
git log $(git merge-base HEAD branch)..branch
git log HEAD $(git branch -a | grep -v "^*" | grep -v "\->" | sed "s/^ /--not /")
git config --global alias.branchlog '!git log HEAD $(git branch -a | grep -v "^*" | grep -v "\->" | sed "s/^ /--not /")'
然后只需输入git branchlog
即可使用。
注意:如果你想忽略remote
分支,你需要从git branch -a
命令中删除-a
选项。
git branch -a
),从结果中删除当前分支和远程 HEADs (grep -v "^*"
和 grep -v "\->"
) 来实现这一点。在最后一步中,它在每个分支前添加 --not
,以告诉 git log
排除此 reference。
注意:远程 HEADs 看起来像这样 remote/origin/HEAD -> remote/origin/master
,会影响到 git log
。
如果您手动输入此命令,则可能如下所示:git log HEAD --not master --not origin/master
基于上面的答案(https://stackoverflow.com/posts/26670064/revisions),这里有几个shell别名:
# output the name of the current git branch
currentbranch(){
if [ $(git rev-parse --is-inside-work-tree) ]; then
git rev-parse --abbrev-ref HEAD
fi
}
# log only commits that belong to the current branch
logbranch() {
git log $(currentbranch) --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/$(currentbranch)")
}
git branch -a
的输出结果。 - undefinedgit --version
)。 - undefined