【问题标题】:Git - 'Your branch is ahead of "X" by "X" commits.'Git - '你的分支在“X”提交之前是“X”。
【发布时间】:2021-10-20 11:29:04
【问题描述】:

我一个人在做一个项目,它有两个分支:主分支和部署分支。
这是我正在运行的命令和我在终端中收到的消息的概要。

关于分支部署:git status
您的分支领先于 'origin/deployment' 13 次提交。 (使用“git push”发布你的本地提交)

没有什么可提交的,工作树干净'

关于分支部署:git push https://github.com/name
一切都是最新的

关于分支部署:git status
关于分支部署 您的分支领先于 'origin/deployment' 13 次提交。 (使用“git push”发布你的本地提交)

没有什么可提交的,工作树干净'

关于分支部署:git checkout main
主要的
切换到分支'main'
您的分支领先于 'origin/main' 2 次提交。 (使用“git push”发布你的本地提交)

在主分支上:git push https://github.com/name
一切都是最新的

在主分支上:git status
在分支主
您的分支领先于 'origin/main' 2 次提交。 (使用“git push”发布你的本地提交)

没有什么可提交的,工作树干净




因此,在我将 main 与部署合并并推送到 github 后,我得到了这个 git 历史记录。一切都没有错误。插入和删除都应用于实时站点。
如您所见,我的历史显示我仍然有要推送的更改,但是当我推送任何内容时,如果我运行 git status 在它说我仍然有要推送的更改之后运行。

tarnations 发生了什么?

运行 git 远程 -v
(fetch) 和 (push) 来源都匹配

运行 git fetch
76373fb...22b0csd 主 -> 原点/主
019287b...22b0csd 部署 -> 源/部署

【问题讨论】:

  • 运行git remote -v 并查看结果以查看originfetchpush)与github.com/name 匹配?
  • 在运行 git remote -v (fetch) 和 (push) origins match 之后
  • 您已经运行 git fetch 以确保您的本地来源/分支机构是最新的?
  • 在运行 git fetch 我认为我看到的是指向同一个提交的两个不同的提交看起来像这个 83217fb...22b0csd 第一组数字不同第二组相同。查看帖子进行编辑
  • 请注意,git push 执行 Git 所称的 机会性更新 以远程跟踪名称,例如 origin/main。运行git fetchgit fetch origin 将对您的远程跟踪名称的所有 进行一次一次性更新,从而无需一次机会地更新一个名称。此外,一些非常古老的 Git 版本(仍然在使用)在某些更新方面不好;运行 git fetchgit fetch origin 说服他们正确更新。这一切都由 Git 1.9 版修复,但如果你的 Git 比这更旧......

标签: git macos github terminal


【解决方案1】:

第一个问题:

Git - '你的分支在“X”提交之前领先于“X”。'

这是一条常见的信息:通常无需担心。

第二个问题:

如您所见,我的历史显示我有一些更改要推送,但是 当我推送任何东西时,如果我在它之后运行 git status 说我还有更改要推送。

请运行git fetch

就我个人而言,我通常运行git pull --all

这是一个很好的讨论:

Git Fetch vs Pull: What's the Difference Between the Git Fetch and Git Pull Commands?

【讨论】:

  • 在运行 git fetch 并检查两个分支上的 git 状态后,它说两个分支都是最新的,没有什么可提交的。为什么会这样呢?所以 fetch 将远程数据带到我的本地副本,但我的本地副本是最新版本,那么为什么我需要首先获取?是什么原因导致我以前从未遇到过这个问题
  • 简短答案:这就是 Git 的工作方式 :) 更长的答案:在每个分支(“master”和“deployment”)和每个 repos(“remote”和“ local") 直到您确信“一切正常”。强烈建议:如果您还没有,请获取“GUI”Git 客户端来分析您的分支历史记录。如果您使用的是 Windows,我建议您使用 Git GUI 和/或 Tortoise Git。我两个都用:)
  • @Colinthedev1:显然,至少在这种情况下,您的本地副本 没有 与另一个(远程)Git 保持同步,因为您拥有相同的提交,但你的 Git还不知道他们有相同的提交。 git fetch 操作让您的 Git(您的软件与您的存储库对话)连接到他们的 Git 并同步您的 Git 对其状态的了解,同时还获取任何新的提交。如果他们从来没有任何新的提交,那很好,但您仍然可以获得同步:您的 Git 现在知道他们的。
  • @paulsm4:我会避免使用git pull --all。 (好吧,我通常完全避免使用git pull,但这不是我的意思。)--all 选项只是传递给git fetch,它表示所有遥控器。这对git pull 来说是一件奇怪的事情,因为git pull 将运行的second 命令将仅使用从one 获得的one 提交哈希ID i> 远程。
猜你喜欢
  • 2020-05-07
  • 2012-12-18
  • 2011-01-26
  • 2017-05-08
  • 2019-12-02
  • 2015-11-18
相关资源
最近更新 更多