首页 > 解决方案 > 在另一个分支上重新设置两个分支(不是主分支)

问题描述

我有以下提交历史:

---> master
  \
   ---------> setting-envs
        \
         -----> feature1
               \
                -----> feature2

现在,我需要从setting-envsinfeature1feature2. 但是,feature1基于setting-envs分支的变基将更改 上的提交历史记录feature1,因此,我将无法正确变基feature2feature1因为它们将具有不同的提交历史记录(setting-envs分支除外)。有没有办法在不弄乱提交历史的情况下在分支上重新设置feature1feature2分支?setting-envs像这样的东西:

---> master
  \
   ---------> setting-envs
             \
              -----> feature1
                    \
                     -----> feature2

标签: gitgit-rebase

解决方案


我不太熟悉你可以放在 rebase 上的所有标志,但我认为你可以使用这个(实用方法):

我假设feature2在创建之后有 3 个提交,feature1我们将它们称为 A、B、C

git checkout feature1
git rebase setting-envs // after this step feature1's commits have changed
// now lets handle feature2:
git branch -m feature2 feature2_backup  // rename the branch
git checkout -b feature2 // checkout out 'new' branch point out of feature1
git cherry-pick A 
git cherry-pick B
git cherry-pick C 
git branch -D feature2_backup

当然,您可以使用一个樱桃选择而不是三个,但一般来说,由于在重新设置基础后将实际的新更改引入到 feature1 中,每次提交后您可能会遇到冲突,所以我个人更喜欢一个一个地处理它们(一个口味问题)。


推荐阅读