Git - 从特定提交开始合并

  • 本文关键字:提交 开始 合并 Git git
  • 更新时间 :
  • 英文 :


假设我有一个主节点和一个开发分支 - 为了简单起见,开发有很多 master 不做的提交:

Develop:
Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 6

我想从 master 中删除一个新的功能分支,该分支在开发中没有任何这些提交。

但棘手的部分是我想从提交 3 开始将开发合并到我的功能中。

我可以挑选,但实际上有很多很多比我的简单示例更多的提交。

如何做到这一点?

你可以挑选:

git checkout -b newfeature master
git cherry-pick commit2..develop

如果不直接支持该语法,请使用:

git cherry-pick $(git rev-list commit2..develop)

注意:a..b范围表示法中的第一次提交不包括在修订列表中,谢谢卡尔

否则,它看起来像是rebase --root ... --onto的情况.我总是在手册页中查找细节。

如果提交 3-6 不依赖于提交 1-2,则可以克隆分支,然后使用交互式变基将开发分支拆分为两个分支,以便历史记录如下所示:

开发 1:主提交 1 提交 2开发 2: 主提交3 提交4 提交5 提交6

然后,您可以使用合并两个不同的分支。否则,您将不得不像另一个答案所说的那样使用樱桃采摘。这将起作用,但您将丢失分支关系的历史记录。

一般来说,为您正在处理的每个特定主题创建一个新分支是有意义的,更细粒度的一面。本地分支机构很便宜,即使是远程分支机构也不错。如果你把事情放在单独的分支上,组织你的思路要容易得多。它还鼓励您尽可能将问题划分为独立的模块化部分,从而鼓励更好的系统设计,提高可测试性等。

最新更新