我的回购中有以下结构:
|-commit9 [bugfix]
|-commit8
|-commit7
|-commit6
|-commit5 [branch-2]
|-commit4
|-commit3
|-commit2 [branch-1]
|-commit1
o-master在其他提交的基础上应用错误修复。如何将commit8和commit9移动到更早的位置,例如,直接在master之上
我遵循这里的说明:How to inject a commit between some two arbitrary commits in the past?,现在我的回购看起来如下:
|-commit7
|-commit6
|-commit5
|-commit4
|-commit3
|-commit2
|-commit1
|-commit9 [bugfix]
|-commit8
| |-commit9 [bugfix]
| |-commit8
| |-commit7
| |-commit6
| |-commit5 [branch-2]
| |-commit4
| |-commit3
| |-commit2 [branch-1]
| |-commit1
|/
o-master因此,commit8和commit9是我最初想要的,但是其余的提交都是重复的,当然,我没有分支名称。
我现在怎样才能得到“线性”历史?
发布于 2016-08-24 20:29:15
好吧,你快到了。
首先,推到一个遥控器或克隆你的本地回购在另一个地方。只是想确定一下。在那之后,让我们修复这个主分支。在我们继续之前,确保你在那支支线上。
git checkout master现在我们不希望其他提交,只有8和9,因为它们已经存在,我们可以简单地将主分支重置为提交9,然后删除另一个提交。不用担心,您的提交仍然在分支中,所以不应该丢失任何东西。
将[commit9@master]替换为提交的sha。
git reset --hard [commit9@master]现在,继续检查错误修复分支,并将其重置为提交7,方法与我们对主分支所做的相同。
git checkout bugfix
git reset --hard [commit7@bugfix]现在,在最后一部分,回到一个线性流,您可以合并您的修补程序回到主人,并让您的所有工作在同一个地方。
git checkout master
git merge bugfix回答原来的问题
我想最简单的方法就是检查你的支部。樱桃-选你想要搬家的两个人。回到原来的分支,并将其重置回两个提交。后者可以通过
git reset --hard HEAD^2这意味着从我目前的位置删除两个提交。
小警告:移动提交可能是危险的。由于您是根据某个更改集提交的,所以相同的代码在其新位置上的行为可能不一样。看到移动的代码可能依赖于不再存在的代码。
https://stackoverflow.com/questions/39132389
复制相似问题