git合并分支回到特定的提交


master (branch)
lesson-1 --------------- lesson-2 --------------- lesson-3 ------------ lesson-4
/       
/         
lesson-2-mod (branch)
/             
/               
- Changes to lesson2

我已经创建了一个教程资源,其中包含lesson-1,lesson-2等的提交和标签。这样,如果用户愿意,可以通过倒带HEAD来查看和尝试开发的每个步骤的代码。

现在,我后来看到了几个版本来制作第2课(可能一段时间之后)。从逻辑上看,这是提交教训2的分支,进行更改,然后合并回教训2。

我该怎么做呢?到目前为止,我只有合并到分支并合并到尖端的经验。我没有从之前的提交中分支,或者合并回一个特定的点。

这种情况经常发生在我身上,我所做的不是创建一个合并分支,而是简单地修改有问题的提交/教训(这里,您的教训2)。要做到这一点,只需执行交互式重基回到教训1:

git rebase -i <lesson1>

您将在编辑器中看到一个待办事项列表:

pick <lesson4>
pick <lesson3>
pick <lesson2>

在最后一行(为第2课),更改";"编辑"、"保存"并关闭编辑器。rebase将启动并暂停,等待您在第2课中所做的更改。根据需要复习第二课。

git add .
git rebase --continue
在这一点上,你很可能会得到合并冲突。不要害怕!只要在出现问题时直接编辑有问题的文件就可以解决它们。解析后,再次输入
git add .
git rebase --continue

如果有更多的合并冲突再次暂停,则重新执行所有操作。最后,你会一路回到你原来的地方,而第2课也会按照你的期望被修改。