我如何查看我所做的任何尚未推送到远程存储库的本地提交?有时,git状态会显示我的分支是在origin/master之前提交的X,但并不总是这样。

这是我安装Git的bug,还是我遗漏了什么?


当前回答

这给出了origin/master和HEAD之间所有提交的日志:

git log origin/master..HEAD

当HEAD位于主分支上时,这将提供未推送提交的日志。


同样,要查看差异:

git diff origin/master..HEAD

其他回答

我真的迟到了,我不知道它是什么时候实现的,但要了解git push会做什么,只需使用--dry-run选项:

$ git push --dry-run
To ssh://bitbucket.local.lan:7999/qarepo/controller.git
   540152d1..21bd921c  imaging -> imaging
git cherry -v 

摘自:Git:查看所有未推送的提交或不在其他分支中的提交。

我认为最典型的方法是运行以下内容:

git cherry --abbrev=7 -v @{upstream}

然而,我个人更喜欢跑步:

git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..

它显示了所有未在上游合并的分支的提交,加上上游的最后一次提交(它显示为所有其他提交的根节点)。我经常使用它,所以我为它创建了别名noup。

git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'

这给出了origin/master和HEAD之间所有提交的日志:

git log origin/master..HEAD

当HEAD位于主分支上时,这将提供未推送提交的日志。


同样,要查看差异:

git diff origin/master..HEAD

要查看尚未推送的所有分支上的所有提交,请执行以下操作:

git log --branches --not --remotes

要查看每个分支的最新提交以及分支名称,请执行以下操作:

git log --branches --not --remotes --simplify-by-decoration --decorate --oneline