热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

合并后分支比原点领先多个提交

我有两个看起来像这样的分支:X--X[origin/master,master]/--

我有两个看起来像这样的分支:

X--X [origin/master, master]
.../

----X--X--X--X--X--X [origin/x, x]

然后我合并x了,master所以现在我有这个:

[origin/master]
X--X------------------X [master]
.../ /
/
----X--X--X--X--X--X [origin/x, x]

现在当git status我得到:

On branch master
Your branch is ahead of 'origin/master' by 7 commits.
(use "git push" ...)
...

为什么是 7 次提交?从图片(我画的git log --graph)来看,它似乎应该领先 1 次提交。其他 6 次提交用于 branch x

回答

其他 6 个提交用于分支 x

啊哈,那正是你错的地方。请记住,Git 中的分支不是提交链,正如您所想的那样。这是一次提交。通过沿着父链向后走,其他一切都只是可以从一次提交中到达的提交。

嗯,一个合并提交,比如你刚刚创建的,有两个父级,其中一个是刚刚合并的分支提交。所以合并后,以前只能xmaster()访问的所有提交现在也可以从(因为x现在是 的父级之一master,这是合并提交)。

因此,Git 在这里所做的就是计算现在可以访问的提交数量,从master无法访问的提交数量origin/master,如下所示:

[origin/master] 7
X--X------------------X [master]
.../ /
/
----X--X--X--X--X--X [origin/x, x]
1 2 3 4 5 6

Git 不关心导致这种情况的拓扑结构;它只是报告一个数字。

所以 Git 报告的数字可能看起来不直观,但实际上它是完全准确的。这是一个有用的数字!Git 正确地报告说,如果您现在要推送,导致origin/master向上移动到masterorigin/master然后将能够达到它目前无法达到的 7 个提交,并且远程存储库将获得它当前没有的 7 个提交。



  • I didn't say Git's messages were phrased particularly beautifully. On the contrary, a lot of the names and terms that Git uses in talking to you are misleading. I've never liked "ahead" and "behind". (In fact I don't like _anything_ about the way `git status` talks.) Still, I've tried to show you that "ahead" does make a certain sense: `master` does indeed reach 7 commits that `origin/master` doesn't yet know about, so in terms of progress (or size?), `master` is 7 commits "ahead".





推荐阅读
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • Git支持通过自定义钩子来扩展其功能,这些钩子根据触发条件的不同,可以分为客户端和服务器端两种类型。客户端钩子通常与本地操作相关联,如提交代码或合并分支;而服务器端钩子则与远程仓库的交互有关。 ... [详细]
  • 假设您当前位于主分支(版本C4),但发现某些功能已损坏,而这些功能在之前的版本C1时还能正常工作。如何将从C1到C4的所有提交复制到一个新的特性分支中,同时将主分支回滚至C1,以便能够安全地进行版本控制和持续集成部署? ... [详细]
  • 本文总结了多个常用的 Git 命令,包括分支管理、代码提交、远程仓库同步等,旨在帮助开发者高效利用 Git 进行版本控制。 ... [详细]
  • Git SSH配置及远程仓库操作指南
    本文介绍了如何配置Git环境,包括设置用户信息、生成和添加SSH密钥,并详细说明了如何通过SSH连接到远程仓库进行版本控制操作。 ... [详细]
  • 今天我在操作Git时遇到了一个问题,即我的仓库进入了分离的HEAD状态,这与之前讨论过的‘即使本地有更改,git push仍显示所有内容最新’的问题类似。 ... [详细]
  • 树链问题的优化解法:深度优先搜索与质因数分解
    本文介绍了一种通过深度优先搜索(DFS)和质因数分解来解决最长树链问题的方法。我们通过枚举树链上的最大公约数(GCD),将所有节点按其质因子分类,并计算每个类别的最长链,最终求得全局最长链。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 基于2-channelnetwork的图片相似度判别一、相关理论本篇博文主要讲解2015年CVPR的一篇关于图像相似度计算的文章:《LearningtoCompar ... [详细]
  • 本文探讨了在Git子模块目录中运行pre-commit时遇到的错误,并提供了一种通过Docker环境解决此问题的方法。 ... [详细]
  • This pull request aims to optimize the npm install retry time in branch 0.7, reducing delays caused by long timeouts when no network connection is available. ... [详细]
  • 本文探讨了如何使用Go语言从传统的INI配置文件中提取所需的信息。INI文件因其简单易用而在多种环境中广泛采用,如操作系统设置、游戏引擎配置以及版本控制系统等。 ... [详细]
  • 本文详细介绍如何在Android模拟器上安装TaintDroid的过程,包括解决源代码链接失效及服务器文件变动等问题,旨在帮助后续用户避免不必要的麻烦。 ... [详细]
author-avatar
萧海豚泳_756
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有