我在主分支中做了三次提交:C1,C2和C3。 从那时起,我创建了一个新的分支'Branch1'。做了一些 更改并让它们在Branch1上的C4中提交。
事情看起来如下:
C1--C2--C3<--Master
\
C4<--Branch1
但是,现在我想使用Master中的早期提交 分叉一个新的分支'Branch2'。即在主分公司, 我想回到C2,并在一个基础上建立 新的分支。主分支不得以任何方式受到干扰。 C5是一个提交保存更改在新的'Branch2'中完成的。 从图形上看,下图应该解释我想要的内容:
C5<--Branch2
/
C1--C2--C3<--Master
\
C4<--Branch1
git命令序列会带我去哪里?
我的第二个问题是在第二个案例达成后 如果执行“恢复”以删除主分支中的C3, 它对Branch1有什么影响? Branch1中的代码会变成 损坏或不稳定?
答案 0 :(得分:8)
只需检查该提交并指定要创建的分支:
git checkout -b Branch2 C2
对于您的第二个问题,这取决于您如何定义“还原”(git revert
或git reset
)。在这两种情况下,Branch1仍将包含提交C3(记住,在git分支中只是'指针',祖先信息存储在提交本身中。)