1

我将 Perfoce 中的一个 Repo 及其所有历史克隆到本地 Git,调用它SubProj,然后我将它推送到一个远程 repo,并使用该远程 repo 合并SubProj到一个SuperProj.

无法将部分历史记录从 Perforce 导入到 Git,无论是@all还是none. 无论如何,一切顺利,我删除了本地仓库及其远程仓库。

现在,Perforce 仓库发生了变化SubProj,所以我再次克隆SubProj了所有历史记录,我想推送然后合并,SuperProj但我不想要整个历史记录(只有新的变化)。

SaySubProj有这段历史,而且是本地的:

A--B--C--D--E--F--G--H

我知道我们可以从最旧的提交开始推送,直到特定的提交。前任:

git push SubProjRemote <commit C on master>:master

将推A--B--C送到遥控器。

但:

我可以只推E--F--G--H送到远程仓库吗?

我可以全部推,然后只合并E--F--G--H吗?

4

1 回答 1

1

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

git rebase --onto < branch_to_rebase_off_of > < commit_to_stop_before > < first_commit_to_include >

对于您的示例,通过 H 提交 E 而不是 AD,您可以运行以下命令,将提交哈希替换为 D 和 H:

git rebase --onto other_branch DH

该分支现在应该具有 other_branch 的基础,但它应该也应用了从 E 到 H 的提交。然后您可以将此分支推送到它需要去的任何地方。

于 2018-05-05T02:03:17.033 回答