如何从旧版本创建分支,并有选择地添加此后的提交

问题描述 投票:0回答:1

我有一个项目急需修复错误,但我也一直在开发一些新功能。我想将我最近提交的所有功能移至不同的分支,因为下一个版本需要主要是错误修复,而不是未经测试的功能。我看过另一个线程,据说我可以使用

git branch branchname (sha1-of-commit)
来创建分支。一旦我创建了这个分支,是否可以将一些最近的提交从 master 移动到新分支(移动的提交不应再出现在 master 分支中)?

git git-branch
1个回答
3
投票

您可以

git cherry-pick
提交到新分支。每个
cherry-pick
应用给定提交的更改,有效地复制它们。

git checkout branchname
git cherry-pick <sha-of-interesting-commit>

从主分支中删除提交是比较棘手的。如果您还没有推送这些提交,您可以对 master 进行交互式

rebase
操作,然后通过从提交列表中删除这些提交来删除它们。

示例:这会重新调整当前分支上最近五次提交的基础

git rebase --interactive HEAD~5

它将向您呈现一个提交列表,您可以在其中删除您不想要的内容

pick 1fc6c95 Patch A
pick 6b2481b Patch B
pick dd1475d something I want to split
pick c619268 A fix for Patch B
pick fa39187 something to add to patch A

请参阅 https://help.github.com/articles/interactive-rebase 了解更多信息。

请注意,

cherry-pick
复制,而不是移动,并且
rebase --interactive
实际上通过创建新的提交链来重写历史记录。

© www.soinside.com 2019 - 2024. All rights reserved.