Git:移动一个基于另一个分支的分支基于主

时间:2015-10-04 20:45:58

标签: git github branch rebase

我的一个班级的教师选择创建一个包含文件夹的存储库,用于现在的I类课程的每个作业。这不是我第一次使用git或github刷,但这个设置很容易混淆。

每个作业都作为一个分支进行处理,并提交"提交"它作为我们的最终版本,我们创建一个拉回请求的请求。这很容易。但是我刚刚开始研究一个新项目,并且在创建它的分支时,我似乎已经包含了之前项目的所有提交,这样我的回购看起来像这样:

  { Project A Commits } { Pr. B Commits }
  --o--o--o--o---o----o------------o----o ProjectB
 /
o---------------------------------------- master
 \
  --o--o--o--o---o----o ProjectA

当它真的应该是这样的时候:

  ----o----o ProjectB
 /
o---------------------------------------- master
 \
  --o--o--o--o---o----o ProjectA

我知道有rebase这样的事情,但这似乎适用于与我自己进入的泡菜略有不同的场景。我真的不希望ProjectA堆积的所有更改都在ProjectB堆积,而我等待ProjectA的拉取请求得到教师的批准。

1 个答案:

答案 0 :(得分:0)

您想要重写历史记录,以便第一个B提交的父级是根。

这就是git rebase,特别是git rebase -i的用途。

签出分支B,运行git rebase -i <ID of root commit>,然后删除要删除的所有提交。