如何推动&合并特定的提交历史记录?

时间:2018-05-04 20:01:15

标签: git perforce git-merge git-push git-p4

我将Perfoce的Repo克隆到Git本地及其所有历史记录,称之为SubProj,然后我将其推送到远程仓库,并使用该远程仓库将SubProj合并到{ {1}}。

无法将部分历史记录从Perforce导入Git,@allSuperProj。无论如何,它很好,我删除了本地仓库及其遥控器。

现在,Perforce软件仓库none发生了变化,因此我再次使用所有历史记录克隆SubProj,我想推送然后与SubProj合并,但我不希望整个历史(只有新的变化)。

SuperProj有这段历史,它是本地的:

  

A - 乙 - C - d - 电子 - F - G ^ - ħ

我知道我们可以从最早的提交开始,直到specific commit。例如:

SubProj

git push SubProjRemote <commit C on master>:master 推送到遥控器。

可是:

我可以只将A--B--C推送到远程仓库吗?

我可以全部推送,但只能合并E--F--G--H吗?

1 个答案:

答案 0 :(得分:1)

如果要将分支的特定部分合并到另一个分支,可以使用rebase的into功能。一旦你在你想要的提交+分支提交的分支上,你就可以运行:

git rebase --onto&lt; branch_to_rebase_off_of&gt; &LT; commit_to_stop_before&gt; &LT; first_commit_to_include&gt;

对于您提交E到H但不是A-D的提交示例,您可以运行以下命令,将提交哈希替换为D和H:

git rebase --onto other_branch D H

分支现在应该具有other_branch的基础,但是它应该也应用了提交E到H.然后你可以在任何需要的地方推送这个分支。