【问题标题】:How to move one specific commit to another branch?如何将一个特定的提交移动到另一个分支?
【发布时间】:2022-10-19 06:27:25
【问题描述】:

所以可以说我有 2 个分支: Master , dev 。提交看起来像这样:

大师:A-B-C

开发人员:A-B-C-D-E-F

我只想将 E 提交从 dev 分支移动到 Master,如下所示:

大师:A-B-C-E

开发者:A-B-C-D-E-F

我知道如果提交 E 需要在提交 D 中进行一些更改,这可能会导致问题,但就我而言,我确信提交 E 与提交 D 没有任何关系。

一段时间后,当 D 和 F 提交也准备好转移到 Master 分支时,我想合并它们而不会出现这样的问题:

大师:A-B-C-D-E-F

开发者:A-B-C-D-E-F

我可以理解是否没有简单的方法可以做到这一点,因为这在大多数情况下都没有意义。对任何可以帮助我确定提交 E 与提交 D 没有任何关系的特定情况的解决方案持开放态度。

【问题讨论】:

  • 开始时 master 和 dev 指向哪个提交?
  • 我似乎没有完全理解你的问题,对不起,对 git 很陌生。
  • 在 git 中,分支只是特定提交的标签。所以A-B-C-D-E-F 不是分支,而是提交树。混淆来自master 可能指向 A 或 F 的事实。
  • 好吧,我现在明白了,这是一个很好的解释。 Master 指向 C dev 在 F 。有了这些信息,我认为我所要求的没有任何意义。我不知道分支只是指针。我希望 Master 指向 E 并跳过 D 这可能没有任何意义,因为我知道分支是指针。那么我的问题仍然存在,不知道如何解决它。
  • 如果 Dev 指向 F,而 master 指向 C。您应该能够将 E 挑选到 master 上。 git switch master; git cherry pick E? (用正确提交的哈希替换 E)

标签: git github branch commit


【解决方案1】:

您可以在 master 上运行 cherry-pick

git checkout master
git cherry-pick E

这将在 master 上创建提交 E 的副本(如果您愿意,作为提交 E')。新历史:

Master : A-B-C-E'
dev: A-B-C-D-E-F

但请注意,将 master 设置为 A-B-C-D-E-F 并不容易。然而,拥有A-B-C-E'-D'-F' 的主人很容易。只需在需要时挑选 DF。或者完全合并分支dev。 Git 应该足够聪明,可以检测到 master 已经包含E 的副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2018-08-12
    相关资源
    最近更新 更多