我如何查看我所做的任何尚未推送到远程存储库的本地提交?有时,git状态会显示我的分支是在origin/master之前提交的X,但并不总是这样。
这是我安装Git的bug,还是我遗漏了什么?
我如何查看我所做的任何尚未推送到远程存储库的本地提交?有时,git状态会显示我的分支是在origin/master之前提交的X,但并不总是这样。
这是我安装Git的bug,还是我遗漏了什么?
当前回答
有一个名为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 show
将显示本地提交中的所有差异。
git show --name-only
将显示本地提交id和提交名称。
如果未推出的提交数量是一个位数,通常是一个,那么最简单的方法是:
$ git checkout
git的回应是告诉你,相对于你的起源,你“领先N个提交”。所以现在在查看日志时,请记住这个数字。如果您“领先3次提交”,则历史上前3次提交仍然是私有的。
我真的迟到了,我不知道它是什么时候实现的,但要了解git push会做什么,只需使用--dry-run选项:
$ git push --dry-run
To ssh://bitbucket.local.lan:7999/qarepo/controller.git
540152d1..21bd921c imaging -> imaging
我使用以下别名仅获取已提交但尚未推送(针对当前分支)的文件列表(以及状态)
git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"
那么只需执行以下操作:
git unpushed
要查看尚未推送的所有分支上的所有提交,请执行以下操作:
git log --branches --not --remotes
要查看每个分支的最新提交以及分支名称,请执行以下操作:
git log --branches --not --remotes --simplify-by-decoration --decorate --oneline