显示没有上游分支的所有提交

tin*_*ike 2 git commit git-branch

即使我没有上游分支,我也想在我的分支上显示所有本地提交。如果我有上游,我通常使用:

$ git log @{u}..$(git branch --show-current)

但是如果没有上游分支,这不起作用

我也尝试过Aleksander Monk的回答:

$ git log --branches --not --remotes

这接近我想要的,但这显示了所有分支上的所有本地提交。我想过滤它以仅显示我对当前分支的提交。

有没有办法通过管道或者有其他方法?

tor*_*rek 5

简短版本:尝试

\n
git log HEAD --not --remotes\n
Run Code Online (Sandbox Code Playgroud)\n
\n

更多细节 :

\n

这里的技巧是,如果没有上游集,就很难知道何时停止。不需要 \xe2\x80\x94 的通常版本$(git branch --show-current)\xe2\x80\x94 是使用@{u}..or @{u}..HEAD(无论你喜欢哪个),这意味着从 开始HEAD,即当前提交,并在到达上游可到达的任何提交时停止。但这使用的是“上游”。

\n

\xe2\x80\x94如何“知道何时停止”\xe2\x80\x94的技巧是重新制定你的公式,就像你所做的那样:

\n
\n

我也尝试过 Aleksander Monk 的回答:

\n

$ git log --branches --not --remotes

\n

这接近我想要的,但这显示了所有本地提交\非所有分支。我想过滤此内容以仅显示我对当前分支的提交。

\n
\n

这个版本的问题在于它的正面引用是--branches,这意味着所有分支名称。它的负面引用是--remotes(所有远程跟踪名称),这就是您想要的;但你想要HEAD作为积极的参考。HEAD所以只需换成--branches

\n
git log HEAD --not --remotes\n
Run Code Online (Sandbox Code Playgroud)\n

你就准备好了。

\n

(请注意,使用时@{u}..您可以完全省略 HEAD,因为它是由两个点暗示的,但对于这个特定命令,您根本不能省略 。但是,如果您愿意HEAD,您可以使用单字符短名称@来表示。 HEAD.)

\n