当上游存在更改时,为什么 git status 显示分支是最新的?

2023-11-30

更改存在于跟踪分支的上游,但是当我输入时git status它表明我的本地分支机构是最新的。这是新行为吗?我是否更改了配置设置,或者出了什么问题?

ubuntu@host:/my/repo# git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean


ubuntu@host:/my/repo# git pull
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (11/11), done.
From bitbucket.org:my/repo
   1234567..abcdefg  master     -> origin/master
Updating 1234567..abcdefg
Fast-forward
 file1        |  1 -
 file2        | 43 +++++++++++++++++++++++++++++++++++++++++++
 file3        | 21 ++++++++++++---------
 file4        | 21 ++++++++++++---------
 4 files changed, 67 insertions(+), 19 deletions(-)
 create mode 100644 file5

状态告诉您的是您落后于所吹罚的裁判origin/master 这是您本地存储库中的本地引用。在这种情况下, ref 恰好跟踪某个远程中的分支,称为origin,但状态并没有告诉您有关远程分支的任何信息。它告诉您有关 ref 的信息,它只是存储在本地文件系统上的提交 ID(在本例中,它通常位于名为.git/refs/remotes/origin/master在您的本地存储库中)。

git pull执行两项操作;首先它做了一个git fetch获取远程存储库中的最新提交(这会更新origin/masterref 在你的本地存储库中),然后它会执行git merge将这些提交合并到当前分支中。

直到您执行以下操作fetch步骤(单独或通过git pull)您的本地存储库无法知道上游有其他提交,并且git status只看你当地的origin/master ref.

When git status说是最新的,它的意思是“与当前分支跟踪的分支保持最新”,在本例中意味着“与名为的本地引用保持最新”origin/master”。这仅相当于“与我们上次执行操作时检索到的上游状态保持同步”fetch” 这与“最新的上游实时状态”不同。

为什么会这样呢?那么fetch步骤是一个可能缓慢且昂贵的网络操作。 Git(以及其他分散式版本控制系统)是为了避免不必要的网络操作,并且是与许多人习惯的典型客户端-服务器系统完全不同的模型(尽管正如下面的评论中指出的,Git 的“远程跟踪分支”概念在这里引起了混乱并非所有 DVCS 都共享)。完全可以离线使用 Git,无需连接到集中式服务器,并且输出git status反映了这一点。

在 Git 中创建和切换分支(并检查其状态)应该是轻量级的,而不是对集中式系统执行缓慢的网络操作。设计 Git 时的假设,以及git status输出,是用户理解这一点(太多的 Git 功能只有在你已经知道 Git 是如何工作的情况下才有意义)。随着大量不熟悉 DVCS 的用户采用 Git,这一假设并不总是有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当上游存在更改时,为什么 git status 显示分支是最新的? 的相关文章

  • 重新打包存储库对于大型二进制文件有用吗?

    我正在尝试将大量历史记录从 Perforce 转换为 Git 并且一个文件夹 现在是 git 分支 包含大量大型二进制文件 我的问题是运行时内存不足git gc aggressive 我的主要问题是重新打包存储库是否可能对大型二进制文件产生
  • 如何从 android.googlesource.com 或 github.com 下载单个目录?

    我想下载 https android googlesource com platform frameworks base git master tools aapt https android googlesource com platfo
  • git diff - 只显示哪些目录发生了变化

    有没有办法只列出已更改的目录 如果我在 git root 的话 project 我更改的文件是 project subtool file1 project subtool file2 project subtool3 file1 我只是想
  • 如何将更改移出主分支

    基本问题 但这一直发生在我身上 进行更改working branch 切换到master git merge working branch git push cap deploy 到舞台 泡一杯新茶 然后我回来思考其他事情并开始做出一些改变
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像
  • git reset 命令中的 ~1 是什么意思?

    git 重置 HEAD 1 我的印象是 1 的意思是 从 HEAD 开始 遵循 1 链接 并将 HEAD 标签设置为新的提交节点 我正期待着 git 重置 HEAD 2 跟随 2 个链接 然后设置 HEAD 标签 但是 如果我尝试它 我会收
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • 无法从 Sourcetree 拉取 Git 远程存储库

    我生成了 ssh 密钥并配置了我的 git 和 SourceTree 我可以 git pull 并从 Git bash 执行其他操作 注意 我在 bashrc 中添加了以下内容以使其正常工作 eval ssh agent ssh add 然
  • 如何在 macOS 上将 Git 升级到最新版本?

    我刚刚购买了一台装有 OS X Lion 的新 Mac 我在终端中检查了默认安装的 git 版本 我得到了答案 git version gt git version 1 7 5 4 我想将 git 升级到最新版本 1 7 8 3 因此我下载
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • 将bitbucket发布到数字海洋

    我本质上是试图使用 bitbucket 来理解 git 的概念 我一直在通过修改本地帐户和 bitbucket 帐户之间的文件来练习版本控制 事实证明这很有帮助 现在我正在尝试弄清楚如何将文件从 bitbucket 或者我猜是 GitHub
  • Git 2.2.x 无缘无故更新旧包文件的时间戳

    Git 2 2 0 和 2 2 1 似乎修改了旧的时间戳 git objects pack pack pack偶尔会无缘无故地文件 它只是改变时间戳 内容是相同的 调试这一点很困难 因为它似乎很少进行更改 我在 2 2 0 之前的任何 Gi
  • 为什么 Git 无法将文件更改与修改后的父级/主控合并?

    我有一个文件 里面只有一行 我创建一个分支并向同一文件添加第二行 保存并提交到分支 我切换回主人 并向文件中添加不同的第二行 保存并提交给master 现在总共有 3 条独特的线路 如果我现在尝试将分支合并回主分支 则会遇到合并冲突 为什么
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我
  • 使用 gitignore 嵌套存储库。

    我想嵌套 2 个 git 存储库 我一直在阅读子模块 有一段时间我认为它很棒 我想我可能想要其他东西 这是我的情况 首先 我想我应该提到我的所有服务器都托管网站 并以 staging domain com 和 domain com 实时 模
  • VSTS:在构建过期的情况下自动变基/合并和重新排队构建验证门

    我们最近对 PR 上的构建验证门进行了更改 这样 如果另一个提交在当前 PR 完成之前进入主分支 则构建会 立即 过期 看here https stackoverflow com questions 49418800 vsts invali
  • 有没有一个简单的命令可以将分支转换为标签?

    我即将完成将 哑快照 转换为 git 的繁琐过程 这个过程进展得非常顺利 感谢这个重命名过程 https stackoverflow com questions 6628539 how to tell git that its the sa

随机推荐

  • 无法将结果发布到 Sonarqube 服务器

    我已经设置了一个 jenkins sonarqube github 集成工作流程 其中 git 存储库中的拉取请求触发一个 webhook 该 webhook 启动 jenkins 作业 从而启动 SonarQube Scanner 问题是
  • 解决 Postgres 中的“错误:在数据中发现文字换行符”?

    我有一个包含 3200 万个元组的数据集 我使用 COPY FROM 将这些元组复制到表中 在前 700 万个左右中 有 3 个格式不正确的元组 在这些情况下 下一条记录不会位于当前记录下方 而是会附加到同一行当前记录的末尾 所以而不是 r
  • g++ 无法静态链接 libmongcxx(r3.0.2) 但动态链接可以

    我使用 mongodb 站点的示例代码来展示这里的问题 操作系统 ArchLiux c 是g 的链接 dean dell xps 13 c version c GCC 6 2 1 20160830 版权所有 C 2016 Free Soft
  • S3 静态网站上的 https 卡住

    我创建了一个 S3 存储桶并将其设为静态网站 如果我尝试重定向 例如重定向到 Google 它对于 HTTP 来说效果很好 例如 curl I http test s3 redirect s3 website eu west 1 amazo
  • UIActionSheet 自定义

    我们可以更改破坏性按钮和其他按钮在 UIActionSheet 中出现的顺序吗 默认情况下 破坏性按钮 红色 显示在其他按钮上方 在我的应用程序中 我希望其他按钮显示在破坏性按钮上方 没问题 只需分配并初始化一个新的 UIActionShe
  • 如何有效地找到给定位置附近最近的位置

    我正在制作一个脚本 其中将大量业务加载到具有纬度和经度的 mySQL 数据库中 然后 我为该脚本提供 最终用户的 纬度和经度 并且该脚本必须计算从提供的纬度 经度到从数据库获取的每个条目的距离 并按照从最近到最远的顺序对它们进行排序 我实际
  • h:dataTable 复合组件、cc.attrs.var、IllegalArgumentException

    我正在尝试创建自己的数据表 例如 primefaces 的数据表 问题是cc attrs var使用时会抛出 IllegalArgumentException 所以我想知道如何才能拥有像 Primefaces 这样的 var 属性
  • 如何将 Math.X 函数与 LINQ 结合使用?

    我有一个简单的表 SQL Server 和 EF6 Myvalues 有列Id Value 双倍的 我试图获得该表中所有值的自然对数之和 我的 LINQ 语句是 var sum db Myvalues Select x gt Math Lo
  • 使用 Array.new(n, Array.new) 创建矩阵

    我通过执行以下操作创建了一个数组 gameboard Array new 3 Array new 3 我尝试像这样分配一个值 我得到了这个 gameboard 0 2 X gameboard gt X X X 当我以不同方式声明数组时 ga
  • 如何为任意类型创建 Roslyn ITypeSymbol?

    我可以用一个语法生成器生成类型的参数Int32像这样 var generator SyntaxGenerator GetGenerator document var paramType generator TypeExpression Sp
  • 为什么 PRFRelation 不支持 fromLocalDataStore 查询?

    我有一个PFUser对象有几个PFRelation指向其他物体 当我运行以下代码时 PFRelation relation PFUser currentUser relationForKey Relation PFQuery query r
  • JavaScript 将字符串添加到数字

    我正在读MDN 上重新介绍 JavaScript并在该部分中Numbers它说您只需在字符串前面添加一个加号运算符即可将字符串转换为数字 例如 42 这将产生 42 的数字输出 但在接下来的部分中运营商它说 通过将字符串 某物 添加到任何数
  • 访问当前系统时区

    基本上我可以使用以下代码检测系统时区列表 foreach TimeZoneInfo info in tz Debug Log time zone id info Id display name info DisplayName 运行此代码
  • AjaxForm 结果中的 AjaxForm

    这是我的观点 foreach var item in Model tr Html RenderPartial PhoneRow item tr PhoneRow model PhoneModel using Ajax BeginForm E
  • Storage::move 给出“在路径中找不到文件:” Laravel 和 Ubuntu

    我想移动一些文件 Storage move posts temp val photos post gt id val 但它给了我 File not found at path home vagrant Code 有什么特殊的配置需要寻找吗
  • Pandas 和 SQLAlchemy:在连接期间重命名列

    I have table A and table B 两者都有一个专栏id和一列name 当我使用pd read sql 将 SQLAlchemy 查询的结果转换为 pandas DataFrame 生成的 DataFrame 有两列 名为
  • 解析数据 org.json.JSONException 时出错:在字符 0 处输入结束 - Android

    我正在开发一个测试 Android 应用程序 它必须显示来自 mysql 数据库的一些数据 这是我的日志 05 22 17 10 56 865 E JSON Parser 31648 Error parsing data org json
  • 如何优雅地检测 SSL

    我有一个 Web 服务 可以绑定到 ssl 或普通 http Java 客户端配置为了解服务器主机和端口 当客户端连接时 我构建服务器端点 例如http 主机 端口 服务 客户端不知道服务器是否使用 ssl 服务器始终绑定到单个端口 因此它
  • 自定义 EditorTemplate 未在 MVC4 中用于 DataType.Date

    我正在使用以下命令将 MVC3 应用程序升级到 MVC4来自微软的说明 一切都进行得相当顺利 除了我的一些日期模型属性现在呈现不同 例如 这些属性之一在视图模型中定义如下 Required ErrorMessage Required Dat
  • 当上游存在更改时,为什么 git status 显示分支是最新的?

    更改存在于跟踪分支的上游 但是当我输入时git status它表明我的本地分支机构是最新的 这是新行为吗 我是否更改了配置设置 或者出了什么问题 ubuntu host my repo git status On branch master