Git Merge(从一个分支合并到另一个分支)

时间:2017-03-22 05:57:35

标签: git github git-merge git-cherry-pick gitattributes

我有两个分支,假设一个分支是branch_one,第二个分支是branch_two

现在两个分支都被用于不同的开发项目。

现在,我想合并一些从branch_twobranch_one的提交,但是基于时间的开始。

我的意思是branch_two我们希望从branch_one上的51个提交合并中提交大约100个提交。

2 个答案:

答案 0 :(得分:1)

描述

如果您不想将所有更改从一个分支合并到另一个分支(使用git merge),则可以cherry-pick一些提交(一次提交或多次提交)。请参阅cherry-pick文档herethis reply,其中详细介绍了挑选一系列提交内容。

据我所知,没有直接选项可以直接合并特定日期的提交,但您可以使用here描述的方法查找某一天创建的提交并将该提交用作你的樱桃选择的开始提交。

但是,请注意,挑选提取确实应用了已选择的提交更改,但会创建新的提交。因此,当您将来合并branch_onebranch_two时,您将有多次提交引入相同的更改。

实施例

在branch_two上:

git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

输出:

commit 5f3be6775d78k28ee0e4f55c05ec897de3f02360
Author: someone <some@one.com>
Date:   Wed Mar 22 17:10:48 2017 +0100

    Commit message

在branch_one上:

git cherry-pick 5f3be6775d78k28ee0e4f55c05ec897de3f02360~1..<id of the latest commit on branch_two>

编辑:注意第一个提交ID后面的~1。这是必要的,因为樱桃选择多次提交

  

[...]不是挑选A,而是A之后的一切   包括B. - J. B. Rainsberger

请参阅here

答案 1 :(得分:1)

您可以使用git format-patch命令

git format-patch -50 -o <output-directory> 

它将为每次提交生成单独的补丁文件 然后将补丁应用于分支