意外地从主题分支而不是主分支

时间:2017-05-22 11:48:26

标签: git

我正在处理多个主题分支。一个主题分支具有许多新功能,并且在提交之前有17个提交。

现在我决定研究另一个主题,并分支到一个新主题。我做了一个提交,这个单一的提交已准备好在GitHub上提取请求。但是我注意到我不小心分支了我之前的主题分支而不是master,所以GitHub正在预览另一个主题分支的其他17个提交。如何将此新提交移动到没有上一主题分支提交的主题分支?

3 个答案:

答案 0 :(得分:3)

问题是,表示这将是直截了当的,因为您可能已经更改了之前文件已经更改过的文件。如果更改因此依赖,则您必须解决冲突。

然而,您可以执行以下操作:

  1. 转到主人git checkout master
  2. 创建一个主题分支(另一个名称不是“偶然”主题分支):git checkout -b new_topic_branch
  3. 检查你的git树,看看提交哈希值(“偶然”分支的第一个和最后一个)。
  4. cherry选择git cherry-pick A..B提交这些提交,A“意外”分支的第一次提交的哈希值,以及B该分支的最后一次提交。在这种特殊情况下,您似乎只进行了一次提交,因此您可以git cherry-pick commit commit使用该单一提交的哈希值
  5. 如果成功,则还会在新分支上处理上次更改。
  6. 然后,您可以选择将该分支合并到主服务器中。

答案 1 :(得分:2)

处理这种情况的概念上最简单和最干净的方法可能是从最新的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 :(得分:1)

将新分支重新绑定到master:

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