从Git分支移动飞行中的工作并将其移至主题分支

时间:2017-06-30 10:49:40

标签: git github version-control branch

背景

如果我有一个看起来像这样的git分支:

-- A -- B -- C -- D -- E --

接近当前时间的提交可能没有对先前提交的文件进行更改。

我希望我的存储库在清理后看起来像这样。

-- A -- B -- D -- E -- \-- C --

基本上,我正在从一个SCM工具(AccuRev)迁移到git。我们有四个代表环境的流。每个流都是继承的。 Prod > pre-prod > QC > Dev 质量控制中可能存在不在Prod中的更改包等等。 由于历史记录在AccuRev中的工作原理,我们只能迁移一个流,因此我们将通过dev流进行迁移,因为历史记录更精细。因此,我们将AccuRev dev流映射为Git中的主分支(生成构建将源于此,因此需要保持稳定)。

问题:

我正在寻找从git master分支中删除正在进行的工作并将其移动到主题分支的最佳方法。

请记住,一次提交包含迁移完成后的主要更改。

1 个答案:

答案 0 :(得分:1)

要将提交Cmaster分支移至topic分支,您可以使用以下命令:

git checkout topic
git cherry-pick <commit id for C>
git checkout master
git rebase -i master~4

~4代表您想要从HEAD重新设置的提交数量

在交互式窗口中,将提交C更改为drop

pick B
drop C
pick D
pick E

现在,提交C已从master移至topic分支。