如何将一些已发布的提交(包括合并)移动到分支并在以后合并回去

时间:2018-06-29 12:03:06

标签: git

我的历史记录如下:

A-B-C-----------M-I-J-K-L
     \         /
      D-E-F-G-H

master当前指向L。这已被推到原点。

我想创建一个新的分支,其中包含D到L,并且主节点(原始)指向C或与C匹配的签入。我需要确保其他克隆所做的任何操作都不会中断。然后在以后的某个时刻,我想将D到L合并回master并推送到原点。

我看过使用还原,但看起来会影响以后合并的内容。有一种方法可以做到,我很困惑。

2 个答案:

答案 0 :(得分:1)

首先从L创建一个新分支,以便获得参考

git checkout master
git checkout -b thisIsL

现在更改母版以指向特定提交deadbeef,以获取更好的十六进制值

git branch -f master deadbeef
git push --force origin master

(请参阅this answer。)

BUT 可能会破坏远程服务器上的任何其他克隆(在rebase-force标志用于推送提交的任何时候)可能是这种情况)。因此,首先要让其他所有人都付出一切,并准备从新克隆开始(如果他们最终需要这样做)。

答案 1 :(得分:0)

这就是我所做的,我不知道这是否是最好的解决方案:

  1. 在master上,我确保我的工作树没有显着变化。
  2. 我使用xcopy来复制整个工作树。
  3. 我使用git revert创建签入,以撤消我不希望在master中进行的所有更改。
  4. 我推送了还原提交
  5. 我创建并签出了最新提交的分支。
  6. 我从备份中复制了所有文件。

这使我可以在分支上进行所有更改的一处签到。它也许使历史有些松散,但我认为它将在以后正确地合并。