什么是实现这一目标的最简单方法?
来自:
我无法想出任何简单的方法来实现这个(少于5个步骤)。
来自:
--A--B
\
1--2--3
to:
--A--B--2
\
1--3
我无法想出任何简单的方法来实现这个(少于5个步骤)。
--A--B
\
1--2--3
to:
--A--B--2
\
1--3
您漏掉了标签,让我们把它们放回去。 这是“之前”的样子:
--A--B <-- master
\
1--2--3 <-- feature
这里是“after”。我将用一个勾号(或者您想要称呼的其他名称)标记它们,因为它们将是原始提交的副本,具有新的和不同的提交ID。
--A--B--2' <-- master
\
1'-3' <-- feature
这无法在一步完成:至少需要两步。
首先,我们必须重新排序1--2--3
序列,以便先出现2
。最简单的方法可能是交互式变基(在分支feature
上使用git命令git rebase -i master
):只需更改pick
顺序,然后rebase将精选2、1、3,移动feature
标签:
--A--B <-- master
\
2'-1'-3' <-- feature
master
标签移动到提交 2'
。有很多命令可以做到这一点,但最简单的方法是使用 git merge
命令进行快进式合并(以避免错误):git checkout master; git merge --ff-only feature~2
master
,我们可以使用git branch -f
,例如在VonC的答案中提到的方法(我正在编辑此答案)。git branch -f master feature~2
2'
;使用git branch
时,我们必须命名要移动的分支,而使用git merge
时,我们必须位于要移动的分支上)。master
分支:git checkout master
2
,创建一个副本2'
:git cherry-pick feature^ # or feature~1
--A--B--2' <-- master
\
1--2--3 <-- feature
feature
分支变基到新的master
分支上,删除提交记录2
:git checkout feature
git rebase -i master
将 pick
行更改为复制 1 和 3 并省略 2,因为提交 2'
已经在 master
上了。
主要内容:
--A--B (master)
\
1--2--3 (B)
git checkout B
git rebase -i master # reorder commits
--A--B (master)
\
2--1--3 (B)
git branch -f master 2
您可以从中获取提交哈希
git reflog
git checkout master
然后挑选相关的提交
git cherry-pick <commit-hash>
1
在B
之后添加,它应该如何成为第二个图表上2
之后的状态?真正的任务是什么? - zerkms