Git:如何从master分支中的早期/早期提交创建新分支?

G S*_*hah 3 git

我在主分支中做了三次提交:C1,C2和C3.从那时起,我创建了一个新的分支'Branch1'.做了一些更改并让它们在Branch1上的C4中提交.

事情看起来如下:

C1--C2--C3<--Master
         \     
          C4<--Branch1    
Run Code Online (Sandbox Code Playgroud)

但是,现在我想使用Master中的早期提交来分叉一个新的分支'Branch2'.也就是说在Master分支中,我想回到C2并在新分支的基础上进行构建.主分支不得以任何方式受到干扰.C5是一个提交保存更改在新的'Branch2'中完成的.从图形上看,下图应该解释我想要的东西:

      C5<--Branch2
     /
C1--C2--C3<--Master
         \     
          C4<--Branch1    
Run Code Online (Sandbox Code Playgroud)
  1. 什么git命令序列将带我到那里?

  2. 我的第二个问题是在完成第二个图中的情况之后,如果执行"恢复"以删除主分支中的C3,它对Branch1会有什么影响?Branch1中的代码会损坏还是不稳定?

kni*_*ttl 8

只需检查该提交并指定要创建的分支:

git checkout -b Branch2 C2
Run Code Online (Sandbox Code Playgroud)

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