错误地从主题分支而不是主分支创建了一个新分支。

4
我正在处理多个主题分支。其中一个主题分支有很多新功能,比master高出17个提交。
现在我决定处理另一个主题,因此我另外创建了一个新的主题分支。我提交了一次变更,并且这个单独的提交已经准备好在GitHub上请求合并。但是我注意到,我不小心从之前的主题分支分叉出来,而不是从master分叉出来,所以GitHub正显示我那个有其他主题分支17个提交的分支。如何将这个新的提交移动到一个没有之前主题分支提交的主题分支中?
3个回答

4
问题在于这可能并不容易,因为您可能已经更改了以前被您之前文件更改过的文件。如果更改是相互依存的,则必须解决冲突。
尽管如此,您可以执行以下操作:
  1. 进入主分支 git checkout master
  2. 创建一个话题分支(与“意外”话题分支名称不同):git checkout -b new_topic_branch
  3. 检查git树并查看提交哈希(“意外”分支的第一个和最后一个)。
  4. 使用 git cherry-pick A..B 选择这些提交,其中 A 是“意外”分支的第一个提交的哈希值,而 B 是该分支的最后一个提交)。 在这种特殊情况下,您似乎只做了一个提交,因此您可以使用 git cherry-pick commit 进行提交,其中 commit 是该单个提交的哈希。
  5. 如果成功,则最新更改也将在新分支上处理。
随后,您可以将该分支合并到主分支中。

抱歉,是的,这些更改完全独立。 - rwols

3

也许在处理这种情况时,最简单、最清晰的方法是从最新的master创建一个新的主题分支,然后将您的单个提交挑选到它上面:

首先找到旧主题分支上最新提交的SHA-1哈希值:

git checkout old_topic
git log

第一次提交是你想要放在自己分支中的最新提交。记录此提交的 SHA-1 哈希值 (前8个字符即可)。

现在从 master 分支创建一个新的主题分支,并挑选出你想要的提交:

git checkout master
git pull origin master
git checkout -b new_topic

现在选择挑选提交记录。
git cherry-pick SHA-1

2

将新分支变基到主分支上:

git checkout new-topic
git rebase --onto master old-topic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接