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

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


当前回答

gitbranch-v将显示每个本地分支是否“超前”。

其他回答

git cherry -v

这将列出您的本地评论历史记录(尚未推送)以及相应的消息

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

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}^..'

如上所述:

git diff origin/master。。头部

但如果您使用的是gitgui

打开gui界面后,选择“Repository”->在“Visualize History”下

注意:有些人喜欢使用CMDPrompt/Terminal,而有些人则喜欢使用GitGUI(为了简单起见)

有一个名为unpushed的工具,它扫描指定工作目录中的所有Git、Mercurial和Subversion repo,并显示未提交文件和未提交提交的列表。在Linux下安装很简单:

$ easy_install --user unpushed

or

$ sudo easy_install unpushed

以在系统范围内安装。

用法也很简单:

$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)

有关详细信息,请参阅未推送的帮助或官方说明。它还有一个cronjob脚本unpushed notify,用于在屏幕上通知未提交和未推送的更改。

这对我来说效果更好:

git log --oneline @{upstream}..

or:

git log --oneline origin/(remotebranch)..