将提交完全拉入另一个分支(不合并)

Pull a commit into another branch exactly (without merging)

我有一个类似于下面的结构:

C1 -- C2  --  C3
               \ -- C4

我想把 C3 拉回到 C4 之上。 (注意:C3 & C3a 保留存档文件

C1 -- C2  --  C3
               \ -- C4 -- C3a

如果我尝试合并或拉取,我只会被告知我已经是最新的了。

如何强制 're-merge' 以便我可以 C3 回到顶部?

如果我没理解错的话,你可以使用 git cherry-pick 将你的 C3 提交移到 C4

的顶部

在您当前的分支中,我认为您不能这样做,因为 C3 已经合并到该分支中。

您可以尝试在新分支上挑选提交,这应该会产生预期的结果:

  1. 首先,创建新分支:

    git checkout -b new_branch <C1>
    
  2. 现在在此 new_branch 上挑选 C4:

    git cherry-pick C4
    
  3. 现在在 new_branch 上挑选 C#:

    git cherry-pick C3
    

以上应该在 new_branch:

中给出期望的结果
C1 -- C2  --  C3
  \-- C4  -- C3