查看未推送的Git提交

查看未推送的Git提交,git,git-diff,git-log,Git,Git Diff,Git Log,如何查看尚未推送到远程存储库的任何本地提交?偶尔,git status会打印出我的分支是在origin/master之前提交的X,但并不总是这样 这是我安装Git时的一个bug,还是我遗漏了什么 git diff origin 假设您的分支被设置为跟踪原点,那么应该会显示差异 git log origin 将为您提供提交的摘要。您可以通过以下方式完成此操作: 这假设origin是上游远程服务器的名称,master是上游分支的名称。在之后省略任何修订名。意味着标题,其中列出了尚未推送的新提交。

如何查看尚未推送到远程存储库的任何本地提交?偶尔,
git status
会打印出我的分支是在
origin/master
之前提交的X,但并不总是这样

这是我安装Git时的一个bug,还是我遗漏了什么

git diff origin
假设您的分支被设置为跟踪原点,那么应该会显示差异

git log origin
将为您提供提交的摘要。

您可以通过以下方式完成此操作:


这假设
origin
是上游远程服务器的名称,
master
是上游分支的名称。在
之后省略任何修订名。
意味着
标题
,其中列出了尚未推送的新提交。

这不是错误。您可能看到的是自动合并失败后的git状态,其中从远程获取的更改尚未合并

要查看本地repo和远程repo之间的提交,请执行以下操作:

git fetch
这是100%安全的,不会模拟您的工作副本。如果git状态发生更改,则会在origin/master之前显示
X提交

现在,您可以显示位于远程但不位于本地的提交日志:

git log HEAD..origin
您还可以使用相同的语法查看差异

git diff origin/master..HEAD

如果您想查看所有尚未推送的分支上的所有提交,您可能需要以下内容:

git log --branches --not --remotes
如果您只想查看每个分支上最近的提交以及分支名称,请执行以下操作:

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

用于在当前分支中查找未推送提交的便捷git别名:

它的基本功能是:

git log origin/branch..branch

但也可以确定当前的分支名称。

您可以显示您在本地进行的所有提交,但不是上游提交

git log @{u}..

{u}
{upstream}
表示当前分支的上游分支(有关详细信息,请参见或)。

我认为最典型的方法是运行以下操作:

git cherry --abbrev=7 -v @{upstream}
但是,我个人更喜欢跑步:

git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..
其中显示了未合并到上游的所有分支的提交,以及上游的最后一次提交(显示为所有其他提交的根节点)。我经常使用它,因此为它创建了别名
noup

git config--global alias.noup\ 'log--graph--decoration--pretty=oneline--abbrev commit--all@{upstream}^..'
有一个名为的工具,它扫描指定工作目录中的所有Git、Mercurial和Subversion repo,并显示ucommited文件和未push提交的列表。 Linux下的安装非常简单:

$ easy_install --user unpushed

要在系统范围内安装

用法也很简单:

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

有关更多信息,请参阅
取消推送--help
或。它还有一个cronjob脚本
unpushed notify
,用于屏幕上通知未受限制和未受限制的更改。

我使用以下别名仅获取已提交但尚未推送的文件列表(以及状态)(对于当前分支)

git config--全局别名.unpushed\
“diff origin/$(git name rev--仅名称标头)…标头--名称状态”
那么就做:

git unpushed

我建议你去看看这个脚本,我已经编写了这个脚本,在你所有的git存储库中一次性签入,它显示了谁没有提交,谁没有推/拉

下面是一个示例结果

这对我很有用:

git cherry -v 
如所示。

您可以尝试

gitk
我知道这不是一个纯粹的命令行选项,但如果您已经安装了它,并且在GUI系统上,这是一个很好的方法,可以准确地看到您正在寻找什么,以及更多

(事实上,我有点惊讶到目前为止还没有人提到这一点。)

将显示本地提交中的所有差异

git show --name-only

将显示本地提交id和提交的名称。

如果尚未推出的提交数量是一个位数,通常是这样,最简单的方法是:

$ git checkout
git的回应是告诉您相对于您的源站“领先N提交”。所以现在在查看日志时,请记住这个数字。如果你“领先3次提交”,历史上排名前3的提交仍然是保密的

git cherry -v

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

类似:要查看未合并的分支:

git branch --all --no-merged

这些可能是可疑的,但我建议使用cxreg的答案来列出所有分支中所有未推送的提交,您可以轻松地使用以下命令:

 git log --branches  @{u}..

所有其他的答案都是关于“上游”(你从中拔出的分支)。
但是一个本地分支可以推送到一个不同于它从中提取的分支

master
可能不会推送到远程跟踪分支“
origin/master

master
的上游分支可能是
origin/master
,但它可以推送到远程跟踪分支
origin/xxx
,甚至可以推送到另一个上游mrepo/yyy
这些由当前分支的
branch.*.pushremote
以及
global remote.pushDefault
值设置

正是远程跟踪分支在查找未推送提交时起作用:在远程跟踪
分支的分支,本地分支将被推送到该分支。
远程的
分支
也可以是
origin/xxx
或者甚至是
另一个上游repo/yyy

Git 2.5+(2015年第二季度)为此引入了一个新的快捷方式:
@{push}
参见,,,,,,,[全部从2015年5月21日起,]和[2015年5月1日]的作者。
(于2015年6月5日合并)

说明:

sha1_name
:实现
@{push}
速记 在三角工作流中,每个分支可能有两个不同的关注点:通常从中提取的
@{upstream}
,以及通常推送到的目的地。后者没有速记法,但有它是有用的

因为
git show --name-only
$ git checkout
git cherry -v
git branch --all --no-merged
 git log --branches  @{u}..
git log @{push}..
git rebase @{push}
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
git log --oneline @{upstream}..
git log --oneline origin/(remotebranch)..
git log ^origin/master master
git reflog
==== branch [behind 1]

> commit 652b883 (origin/branch)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-10 09:11:11 +0100
|
|     Commit on remote
|
o commit 2304667 (branch)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-08-28 13:21:13 +0200

      Commit on local

==== master [ahead 1]

< commit 280ccf8 (master)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 21:42:55 +0100
|
|     Commit on local
|
o commit 2369465 (origin/master, origin/HEAD)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2016-03-10 09:02:52 +0100

      Commit on remote

==== test [ahead 1, behind 1]

< commit 83a3161 (test)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 22:50:00 +0100
|
|     Diverged from remote
|
| > commit 4aafec7 (origin/test)
|/  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
|   Date:   2016-03-14 10:34:28 +0100
|
|       Pushed remote
|
o commit 0fccef3
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-09-03 10:33:39 +0200

      Last common commit