我正在寻找确切的命令来列出所有现有分支的所有提交,这些分支未合并到我的分支(包括来自已获取的远程分支),这些提交基于我的分段分支的提示。
git log --all --remotes
我用它来列出所有分支。
如何排除暂存分支中已有的一次?
使用git log --branches --remotes ^staging
,或等效地,git log ^staging --branches --remotes
。
你可以使用--all
,如果你的意思是所有引用(包括标签,注释,refs/stash
等),但你特别说的分支和远程跟踪名称,--branches
和--remotes
产生正确的匹配。请注意,--branches
和--remotes
可能会跟随=<pattern>
以匹配特定的名称模式。
这里的诀窍是否定语法(^X
或--not
后跟X
)告诉revision-walk代码排除名为X
的提交以及可从X
到达的任何提交。积极的参考文献给git log
起点;负面的引用给git log
停止的地方;然后git log
遍历优先级队列,该队列包含尚未访问的提交。因此,最初,队列按某种顺序查看(包含散列ID)所有分支提示和所有远程跟踪名称提示。 Git访问第一个这样的提交,除非它被排除在外,即位于staging
的顶端或从staging
的顶端可到达。 Git将该提交的父级放入队列,然后访问队列中的下一个提交(除非它被排除,如前所述)。