如何将另一个git repo像子模块一样包含在我自己的repo中,但是又合并了其他更改/ pullrequests?

时间:2019-05-15 14:55:55

标签: git github ros

我想将github仓库添加到我自己的仓库中。 但是,有一个我需要修复的错误。对于上述错误,已经提出了pullrequest,但尚未将其合并(我不需要向后兼容的问题)。

到目前为止,我一直在使用子模块,但是我不知道在不丢失历史记录的情况下应用pullrequest。

我遵循了本指南: https://help.github.com/en/articles/checking-out-pull-requests-locally#modifying-an-inactive-pull-request-locally

但是,实际上,我有一个完整的新分支,它仅位于我的存储库中,感觉不正确。

1 个答案:

答案 0 :(得分:0)

好吧,所以您在当前目录中有一个超级项目,在子目录中有一个子模块,我们将其称为subm

.
|
`--subm

将PR拉入(提取并合并)到子模块中:

cd subm
git fetch origin pull/$id/head:pr-$id
git merge pr-$id

我分别展示了git fetchgit merge来强调合并。实际上,这些命令可以合并为一个git pull origin pull/$id/head

现在您有了一个更新的子模块。不幸的是,您无法将其推回其origin,因此您的协作者必须合并自己。要解决此问题,您需要将子模块从其origin派生到团队可用的共享存储库。然后,将合并的分支推到分支,所有协作者都从分支中拉出。

当子模块合并PR时,您将不再需要派生。卸下叉子,然后您和所有协作者都使用git pull origin +master更新子模块。

在子模块中的每个更改上,您都需要在超级项目中提交更改:

cd .. # back to the root of the superproject
git add subm
git commit -m "Update subm"