首页 > 解决方案 > 根据我的分支的提示列出所有比我的暂存分支更新的新提交(来自所有分支,包括获取的远程分支)?

问题描述

我正在寻找确切的命令来列出所有现有分支中未合并到我的分支中的所有提交(包括来自已获取的远程分支),这些提交基于我的暂存分支的尖端。

git log --all --remotes我用它来列出所有的分支。

如何排除暂存分支中已有的一次?

标签: git

解决方案


使用git log --branches --remotes ^staging,或等效地,git log ^staging --branches --remotes

--all如果您指的是所有引用(包括标签、注释等),则可以使用refs/stash,但您特别指出了分支和远程跟踪名称,并为其--branches生成--remotes正确的匹配项。请注意,--branchesand--remotes后面可能会=<pattern>匹配特定的名称模式。

这里的技巧是否定语法(^X--not后跟X)告诉修订遍历代码排除命名的提交X和任何可从X. 正面的引用提供git log起点;负面引用提供了停止git log的地方;然后遍历包含尚未访问的提交的优先级队列。因此,最初,队列以某种顺序查看(包含哈希 ID)所有分支提示和所有远程跟踪名称提示。Git 会访问第一个这样的提交,除非它被排除在外,即在git logstagingstaging. Git 将该提交的父级放入队列中,然后访问队列中的下一个提交(除非它像以前一样被排除在外)。


推荐阅读