Git: 将基于另一个的分支移动到基于 master 的分支
Git: Moving a branch that was based on another to be based on master
我的一位 class 老师的讲师选择为我现在所在的 class 的每个作业创建一个包含文件夹的存储库。这不是我第一次接触 git 或 github,但这种设置很容易造成混淆。
每个任务都作为一个分支进行处理,为了 "submit" 它作为我们的最终版本,我们创建了一个 pull request 返回给 master。这很容易。但是我刚刚开始从事一个新项目,在创建它的分支时,我似乎已经包含了先前项目的所有提交,因此我的回购看起来像这样:
{ 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 的拉取请求得到讲师的批准。
您想重写历史,使第一个 B 提交的父级成为根。
这就是 git rebase
,特别是 git rebase -i
的目的。
检查分支 B,运行 git rebase -i <ID of root commit>
,然后删除所有要删除的提交。
我的一位 class 老师的讲师选择为我现在所在的 class 的每个作业创建一个包含文件夹的存储库。这不是我第一次接触 git 或 github,但这种设置很容易造成混淆。
每个任务都作为一个分支进行处理,为了 "submit" 它作为我们的最终版本,我们创建了一个 pull request 返回给 master。这很容易。但是我刚刚开始从事一个新项目,在创建它的分支时,我似乎已经包含了先前项目的所有提交,因此我的回购看起来像这样:
{ 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 的拉取请求得到讲师的批准。
您想重写历史,使第一个 B 提交的父级成为根。
这就是 git rebase
,特别是 git rebase -i
的目的。
检查分支 B,运行 git rebase -i <ID of root commit>
,然后删除所有要删除的提交。