如何知道最新的master提交是否已被推送到远程?

Mic*_*ant 26 git merge branch commit github

我已将一个分支合并到主人,现在我可以在我的 git log

一段时间过去了,现在我想知道我以前是否也将master(带有该提交)推送到遥控器.怎么知道它是否被推了?

我可以想到一些解决方法,例如在其他地方重新存储存储库,或重置和检查然后重新合并,但我觉得可能有一个更简单的答案.

这是不同于我怎么能在git中知道一个分支是否已经合并到master中?据我所知它已合并,只是不知道远程推送.

Kla*_*urn 35

> git status
Run Code Online (Sandbox Code Playgroud)

如果输出是

# On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

然后你推了当前的提交.

如果输出改为以

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#   (use "git push" to publish your local commits)
Run Code Online (Sandbox Code Playgroud)

然后你有一个尚未推送的本地提交.您会看到这一点,因为远程分支origin/master指向上次推送到源的提交.但是,您的分支是ahead of 'origin/master',意味着您有一个在上次推送提交后创建的本地提交.

如果您感兴趣的提交不是最新的,那么您可以这样做

> git log --decorate --oneline
Run Code Online (Sandbox Code Playgroud)

找出有问题的提交是否在提交指向之前或之后origin/master.
如果提交之后(日志中的更高位置)origin/master,则表示尚未推送.

  • 它并不总是有效。例如,它在随机 github 存储库中对我有用。然而,当我在我们的本地项目中使用 `git status` 时,该行根本不存在,即在 `On branch master` 之后紧跟在 `Untracked files` 行之后。 (2认同)
  • 因此,有时候,我在IRC上找到了答案:我错过了`git branch --set-upstream-to origin / master master`命令。当使用`git clone`时,git通常会自动设置它,但就我而言,它是本地创建的代码,然后添加了“ origin”,因此显然我不得不手动调用它。现在我也看到了与遥控器的区别。 (2认同)

som*_*esh 10

如果您已进行多次提交但不确定其中哪一项已被推送到远程,请尝试以下操作:

git log origin/<remote-branch>..<local-branch>
Run Code Online (Sandbox Code Playgroud)

例:

git log origin/master..master
Run Code Online (Sandbox Code Playgroud)

这将列出本地分支中尚未推送到所提到的远程分支的所有提交.

  • 我发现这比所选答案更可靠。由于某些原因,在我的系统上,``git status``并不总是报告本地分支是否领先。 (2认同)

Vas*_*kov 8

以编程方式执行此操作的解决方案:

git merge-base --is-ancestor @{u} HEAD
Run Code Online (Sandbox Code Playgroud)

您可能还需要检查你的本地目录是干净的,如没有未提交文件的变化:

test -z "$(git status --porcelain)"
Run Code Online (Sandbox Code Playgroud)


Vla*_*tin 6

你可以使用git log --graph --all --decorate,它将显示每个引用所在的位置(HEAD、master、origin/master 等)


小智 6

我建议你运行这个:

$ git fetch --all
Fetching origin
Fetching upstream
Run Code Online (Sandbox Code Playgroud)

这将从所有遥控器获取最新数据。

然后你运行:

$ git branch -v
  master       ef762af [ahead 3] added attach methods
* testing      4634e21 added -p flag
  upstream     1234567 [ahead 1, behind 7] updated README.md
Run Code Online (Sandbox Code Playgroud)

这将显示您在哪些分支上领先或落后。

我发布这个是因为其他答案都没有提到获取远程数据,这一步至关重要。