Git:如何从主分支的早期/较旧提交中创建一个新分支?

3

我在主分支(master branch)上提交了三个(commit):C1、C2和C3。然后我创建了一个新的分支'Branch1',进行了一些修改并将它们(commit)提交到'Branch1'中的C4。

这些事情看起来是这样的:

C1--C2--C3<--Master
         \     
          C4<--Branch1    

然而,现在我想在主分支上使用早期提交来创建一个名为“Branch2”的新分支。也就是说,在主分支中,我想回到C2的时间并在其之上构建一个新的分支。主分支不应以任何方式受到干扰。C5是保存在新“Branch2”中所做更改的提交。从图形上看,下面的图示应该解释了我想要的:

      C5<--Branch2
     /
C1--C2--C3<--Master
         \     
          C4<--Branch1    
  1. 哪些git命令序列可以带我到那里?

  2. 我的第二个问题是,在实现第二幅图中的情况后,如果在主分支中执行“还原”以删除C3,对Branch1会产生什么影响? Branch1中的代码会变得损坏或不稳定吗?

1个回答

8
只需检查该提交并指定要创建的分支即可:
git checkout -b Branch2 C2

对于你的第二个问题,这取决于你如何定义“还原”(git revertgit reset)。在两种情况下,Branch1仍将包含提交C3(请记住,在git中分支只是“指针”,祖先信息存储在提交本身中)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接