当前分支 Git 提交列表

3
当您在Github或Stash中发起Pull Request时,您会获得来自当前分支的提交列表。
获取组成当前分支的提交列表的git命令是什么,而不需要指定我们起始分支的名称?
4个回答

1
通常,为了列出与当前分支相关的提交,您需要知道您来自哪个分支,就像我在“Git log to get commits only for a specific branch”中所解释的那样。
否则,您需要排除不属于您分支的提交(如suggested by dimirc):
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

1
在 Git 中,如果不指定要排除的引用,就无法仅列出特定分支的提交记录。但是,您可以通过程序确定要排除的引用,命令可能如下所示:
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选项。


此命令将记录所有仅从当前 HEAD 可到达的提交。它通过列出所有分支 (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

请提供git branch -a的输出结果。 - undefined
请告诉我你正在使用的 git 版本(git --version)。 - undefined
ToNFluent * bugfix/2029-暂时冻结 master release/4.24.0 remotes/origin/HEAD -> origin/master remotes/origin/ToNFluent remotes/origin/bugfix/2029-暂时冻结 remotes/origin/master - undefined
@LaurentKempé 我更新了答案。现在应该可以工作了。 - undefined
我得到了一个列表,但是提交的数量太多了,不过我理解了这个命令的意思,所以我可能会进行适应。 - undefined
显示剩余7条评论

0

基于上面的答案(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)")
}

-2
切换您当前的git分支 "git branch" -> 列出仓库中的分支(*表示您在该分支上,您的提交将归属于该分支) 如果您想查看任何分支的提交,则使用 "git checkout branchname" 切换到要查看提交的分支 "git log" -> 将显示该分支下的所有提交

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接