变基以及变基推送提交意味着什么

2024-01-12

人们常说,您不应该对已经推送的提交进行变基。这可能意味着什么?


To understand this, we need to understand a bit about how git works. A git repository is a tree structure, where the nodes of the tree are commits. Here's an example of a very simple repository: When you fork

it has four commits on the master branch, and each commit has an ID (in this case, a, b, c, and d). You'll notice that d is currently the latest commit (or HEAD) of the master branch. enter image description here

在这里,我们有两个分支:master 和 my-branch。您可以看到 master 和 my-branch 都包含提交 a 和 b,但随后它们开始出现分歧:master 包含 c 和 d,而 my-branch 包含 e 和 f。与 master 相比,b 被认为是 my-branch 的“合并基础”——或者更常见的是,只是“基础”。这是有道理的:您可以看到 my-branch 是基于 master 的早期版本。

假设 my-branch 已经过时,并且您希望使用最新版本的 master 将其更新。换句话说,my-branch 需要包含 c 和 d。您可以进行合并,但这会导致分支包含奇怪的合并提交,从而使审查拉取请求变得更加困难。相反,您可以进行变基。

当您变基时,git 会找到分支的基础(在本例中为 b),找到该基础和 HEAD 之间的所有提交(在本例中为 e 和 f),并在分支的 HEAD 上重新播放这些提交您正在重新定位(在本例中为 master)。 Git 实际上会创建新的提交来表示您的更改在 master 之上的样子:在图中,这些提交称为 e' 和 f'。 Git 不会删除您之前的提交:e 和 f 保持不变,如果 rebase 出现问题,您可以立即返回到以前的状态。

当许多不同的人同时处理一个项目时,拉取请求可能很快就会过时。 “过时的”拉取请求是指不再与开发主线保持同步的拉取请求,需要对其进行更新才能合并到项目中。拉取请求过时的最常见原因是冲突:如果两个拉取请求都修改同一文件中的相似行,并且一个拉取请求被合并,则未合并的拉取请求现在将发生冲突。有时,拉取请求可能会在没有冲突的情况下过时:也许代码库中不同文件中的更改需要拉取请求中的相应更改才能符合新架构,或者分支可能是在有人意外地将失败的单元测试合并到主分支。无论出于何种原因,如果您的拉取请求已过时,您将需要将分支重新设置为最新版本的主分支,然后才能合并。

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

变基以及变基推送提交意味着什么 的相关文章

随机推荐

  • Delphi 中的运算符重载

    是否有可能 在 Delphi 中 重载类中的运算符 我前段时间读过 它只能用于记录 但我发现对于类的信息也如下面的代码所示 type TMyClass class class operator Implicit a Integer TMyC
  • 具有嵌套集合的类 - 如何填充嵌套类?

    我对如何将一个类与另一个类的嵌套集合进行水合感到有点困惑 我收到错误 AutoFixture 无法从 System Collections Generic IList 1 typename 创建实例 我尝试过使用Fixture Regist
  • 在Java 1.6中File.renameTo()在linux上是原子的吗?

    正如标题所说 在Java 1 6中File renameTo POSIX Linux 上的原子操作 根据这个链接 http linux die net man 2 rename POSIX Linux 中的重命名操作是原子的 但是它成立吗t
  • 如何配置 Ninject 以便根据之前注入的实例注入正确的实例

    我找不到合适的词语来表达我的问题 所以我会让我的代码说话 我有存储库 class Repository public Repository DbContext ctx 然后我有这个绑定 Bind
  • 如何使我所需的包全局化,而不与composer-php发生冲突?

    假设我有一个包裹sprout services我正在使用的另外 3 个软件包require 一旦第一个运行的包需要它 它就会在全局空间中打开 从我的应用程序中的任何地方 我都可以做new SproutServices ServiceLoca
  • 如何为 iPhone 应用程序创建多个主题/皮肤? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经准备好一个 iPhone 应用
  • PowerShell 中“@{}”的含义是什么

    我在这里有一行脚本供审查 我注意到带有值的变量声明 function readConfig Param string fileName config Get Content fileName Where Object like ForEac
  • 如何删除codeigniter路径中的“index.php”

    我该如何删除 index php 在 codeigniter 中心某处的每条路径中都突出 我想要干净的非index php fied URLs 如果您使用 Apache 请将 htaccess 文件放入您的 Web 根目录中 其中包含以下内
  • Api 无法在 onEachFeature React leaflet 函数内工作

    我陷入了无法解决的问题 我正在用反应传单制作等值线 问题是我的API数据在highlightFeature函数中不起作用 该函数将其分配给onEachFeature 当我控制台API数据时 我在highlightFeature函数之外得到了
  • 我怎样才能停止 jQuery Mobile 将样式应用到我的特定表单元素

    是否可以指示 jQuery Mobile 不要设置我的输入框和提交按钮的样式 我很擅长自定义 CSS jQuery 移动脚本将其自己的样式应用于我的所有元素 我尝试的一种解决方法是覆盖我的自定义 CSS 中的这些元素 还有其他功能可以让我执
  • 泵送引理(常规语言)

    我需要一些帮助来解决泵引理问题 L a b c a L lt b L lt c L 这是我到目前为止得到的 y uvw is the string from the pumping lemma 我让 y abbc n n 是泵引理的长度 y
  • 从 R 调用 .NET/C#

    我想使用仅在 NET 中可用的 R API 是否有可用于从 R 调用 NET C 代码的标准方法 如果是这样 我该怎么做 本讨论的读者可能会考虑的另一个选择是rClr 包 https github com jmp75 rClr 我已经研究了
  • 实体框架 CTP5,代码优先。可选的导航属性

    我正在使用实体框架 CTP5 代码优先 并且我有两个类 public class Order public int Id get set public decimal SomeOtherProperty1 get set navigatio
  • AWS Elastic Beanstalk NodeJS 和日志

    我想将我的 NodeJS 项目从单个 EC2 迁移到 ElasticBeanstalk 在我当前的代码中 我使用依赖项 log4js 在文件系统上创建日志文件 在 EC2 上 这可以创建 但在 ElasticBeanstalk 中记录某些内
  • CLion 项目中所有错误的列表

    CLion 2016 2 有助于检测您正在编辑的文件中的潜在错误 这些错误可以在代码右侧的验证栏中看到 但这只是一个文件 有没有办法 如工具窗口 来获取整个项目或其特定部分中所有此类警告的列表 如果它还列出了编译器的警告和错误 那就加分了
  • 如何在引导的 Firefox 扩展中实现 XPCOM 组件 (nsIContentPolicy)

    我有一个 Firefox 的引导扩展 现在我想实现 nsIContentPolicy XPCOM 组件 我写了一个组件模块代码 现在我想注册这个组件 我想注册组件的原因是我想将我的组件添加到nsICategoryManager addCat
  • Kubernetes 作业被创建但不会立即执行

    例如 创建如下所示的就业机会 apiVersion batch v1 kind Job metadata name test job sebas spec template spec containers name pi image per
  • OpenCV Mat 处理时间

    我想知道 OpenCV 函数的 src 源 和 dst 目标 使用不同的变量是否会对处理时间产生影响 我有下面两个函数 做同样的事情 public static Mat getY Mat m Mat mMattemp new Mat Img
  • Swift 2.0 中的 do { } catch 不会处理从这里抛出的错误

    更新 swift 2 0 后 我遇到了 do try catch 错误 如下图所示 我怎样才能解决这个问题 谢谢 该错误告诉您封闭的捕获并不详尽 这是因为自动生成的catch块只是捕获NSError对象 编译器无法判断是否有其他对象Erro
  • 变基以及变基推送提交意味着什么

    人们常说 您不应该对已经推送的提交进行变基 这可能意味着什么 To understand this we need to understand a bit about how git works A git repository is a