【问题标题】:Why does a new git branch have the old history?为什么一个新的 git 分支有旧的历史?
【发布时间】:2022-11-02 22:23:25
【问题描述】:

我正在研究 python 中的设计模式,我正在 git 中进行版本控制。 我做的第一件事是创建一个名为“Creational Patterns”的分支,在其中我为每个分支(工厂、构建器......等)做了一个提交 后来我创建了一个名为“结构模式”的新分支并移至它。我一直致力于这些模式的这个分支。然而,当我去查看我的“结构模式”分支的历史时,也有创建模式提交! 我认为 git 正在做快进合并,但是我有以下问题:是否有可能在没有创建模式分支的提交的情况下拥有这个结构模式分支?或 git 将始终自动执行此操作。 非常感谢!

【问题讨论】:

  • 默认情况下,当您启动一个分支时,它将使用您所在的提交(或您提供的任何其他提交)来创建其内容和历史......您可以选择要求 git 不要带入该分支的历史您使用--orphan (git checkout --orphan a-new-branch) 作为基础。

标签: git version-control github-actions branch git-flow


【解决方案1】:

您从“Creational Patterns”分支切换了分支。如果您从 main 分支开始一个新分支,那就不同了。如果您创建一个新分支,它将从您当前所在的位置创建一个分支。 (如果那是一个不同的分支,它将采取那个)

您将需要重新设置您的分支。 @torek 在另一个问题上对此有一个很长的答案。你可以在这里查看:How to change the starting point of a branch?

【讨论】:

  • 也就是说,每当我从已经有提交的分支创建一个分支时,我会获取这个提交历史吗?我认为它只需要我创建新分支的分支的最后一次提交。我在“Creational Patterns”分支上使用的命令是:git checkout -b“Structural_Patterns”。非常感谢您的及时回复:)
  • 不!正如你所说,这是正确的。对不起。我误会你了吗?它将接受您创建的分支的所有提交。这不适用于新提交,除非您重新设置分支。示例:Main 已提交“a”。分支创建模式已提交“b”。使用您的命令分支“结构模式”将以 commit 'c' 开头
猜你喜欢
  • 1970-01-01
  • 2018-03-11
  • 2015-07-24
  • 2018-05-28
  • 1970-01-01
  • 2018-05-29
  • 2021-09-03
  • 2017-12-08
  • 1970-01-01
相关资源
最近更新 更多